- 浏览: 115416 次
- 性别:
- 来自: 广州
最新评论
-
焦德江:
非常感谢楼主啦!网上下载其他精简版的都不能用
安装oracle9i客户端精简版 -
fuyonglei:
这个标准应该严重过时了。。。。。。。。
我刚毕业一年,除了没带 ...
程序员 -
marc0658:
非常好。。
安装oracle9i客户端精简版 -
李智明:
和没说一样
IETester+DebugBar+Companion.JS -
JustDoNow:
哥们,谢啦
解决问题了
log4j日志文件乱码问题
我读了一下代码,觉得还可以,留个印。
/*
* EnhanceJS version 1.0a - Test-Driven Progressive Enhancement
* Copyright (c) 2010 Filament Group, Inc, authors.txt
* Licensed under MIT (license.txt)
*/
(function(win, doc) {
var settings, body, windowLoaded, head;
if(doc.getElementsByTagName){ head = doc.getElementsByTagName('head')[0] || doc.documentElement; }
else{ head = doc.documentElement; }
enhance = function(options) {
options = options || {};
settings = {};
// mixin settings
for (var name in enhance.defaultSettings) {
var option = options[name];
settings[name] = option !== undefined ? option : enhance.defaultSettings[name];
}
// mixin additional tests
for (var test in options.addTests) {
settings.tests[test] = options.addTests[test];
}
runTests();
applyDocReadyHack();
windowLoad(function() {
windowLoaded = true;
});
};
enhance.defaultTests = {
getById: function() {
return !!doc.getElementById;
},
getByTagName: function() {
return !!doc.getElementsByTagName;
},
createEl: function() {
return !!doc.createElement;
},
boxmodel: function() {
var newDiv = doc.createElement('div');
newDiv.style.cssText = 'width: 1px; padding: 1px;';
body.appendChild(newDiv);
var divWidth = newDiv.offsetWidth;
body.removeChild(newDiv);
return divWidth === 3;
},
position: function() {
var newDiv = doc.createElement('div');
newDiv.style.cssText = 'position: absolute; left: 10px;';
body.appendChild(newDiv);
var divLeft = newDiv.offsetLeft;
body.removeChild(newDiv);
return divLeft === 10;
},
floatClear: function() {
var pass = false,
newDiv = doc.createElement('div'),
style = 'style="width: 5px; height: 5px; float: left;"';
newDiv.innerHTML = '<div ' + style + '></div><div ' + style + '></div>';
body.appendChild(newDiv);
var childNodes = newDiv.childNodes,
topA = childNodes[0].offsetTop,
divB = childNodes[1],
topB = divB.offsetTop;
if (topA === topB) {
divB.style.clear = 'left';
topB = divB.offsetTop;
if (topA !== topB) {
pass = true;
}
}
body.removeChild(newDiv);
return pass;
},
overflow: function() {
var newDiv = doc.createElement('div');
newDiv.innerHTML = '<div style="height: 10px; overflow: hidden;"></div>';
body.appendChild(newDiv);
var divHeight = newDiv.offsetHeight;
body.removeChild(newDiv);
return divHeight === 10;
},
ajax: function() {
//factory test borrowed from quirksmode.org
var xmlhttp = false, index = -1, factory,
XMLHttpFactories = [
function() { return new XMLHttpRequest() },
function() { return new ActiveXObject("Msxml2.XMLHTTP") },
function() { return new ActiveXObject("Msxml3.XMLHTTP") },
function() { return new ActiveXObject("Microsoft.XMLHTTP") }
];
while ((factory = XMLHttpFactories[++index])) {
try { xmlhttp = factory(); }
catch (e) { continue; }
break;
}
return !!xmlhttp;
},
resize: function() {
return win.onresize != false;
},
print: function() {
return !!win.print;
}
};
enhance.defaultSettings = {
testName: 'enhanced',
loadScripts: [],
loadStyles: [],
queueLoading: true,
appendToggleLink: true,
forcePassText: 'View high-bandwidth version',
forceFailText: 'View low-bandwidth version',
tests: enhance.defaultTests,
addTests: {},
alertOnFailure: false,
onPass: function(){},
onFail: function(){},
onLoadError: addIncompleteClass
};
function cookiesSupported(){
var testCookie = 'enhancejs-cookietest';
createCookie(testCookie, 'enabled');
var result = readCookie(testCookie);
eraseCookie(testCookie);
return result === 'enabled';
}
enhance.cookiesSupported = cookiesSupported();
function forceFail() {
createCookie(settings.testName, 'fail');
win.location.reload();
}
if(enhance.cookiesSupported){ enhance.forceFail = forceFail; }
function forcePass() {
createCookie(settings.testName, 'pass');
win.location.reload();
}
if(enhance.cookiesSupported){ enhance.forcePass = forcePass; }
function reTest() {
eraseCookie(settings.testName);
win.location.reload();
}
if(enhance.cookiesSupported){ enhance.reTest = reTest; }
function runTests() {
var result = readCookie(settings.testName);
//check for cookies from a previous test
if (result) {
if (result === 'pass') {
enhancePage();
settings.onPass();
} else {
settings.onFail();
}
// append toggle link
if (settings.appendToggleLink) {
windowLoad(function() {
appendToggleLinks(result);
});
}
}
//no cookies - run tests
else {
bodyOnReady(function() {
var pass = true;
for (var name in settings.tests) {
pass = settings.tests[name]();
if (!pass) {
if (settings.alertOnFailure) {
alert(name + ' failed');
}
break;
}
}
result = pass ? 'pass' : 'fail';
createCookie(settings.testName, result);
if (pass) {
enhancePage();
settings.onPass();
} else {
settings.onFail();
}
// append toggle link
if (settings.appendToggleLink) {
windowLoad(function() {
appendToggleLinks(result);
});
}
});
}
}
function bodyOnReady(callback) {
var checkBody = setInterval(bodyReady, 1);
function bodyReady() {
if (doc.body) {
body = doc.body;
clearInterval(checkBody);
callback();
}
}
}
function windowLoad(callback) {
if (windowLoaded) {
callback();
} else {
var oldonload = win.onload
win.onload = function() {
if (oldonload) { oldonload(); }
callback();
}
}
}
function appendToggleLinks(result) {
if (!settings.appendToggleLink || !enhance.cookiesSupported) { return; }
if (result) {
var a = doc.createElement('a');
a.href = "#";
a.className = settings.testName + '_toggleResult';
a.innerHTML = result === 'pass' ? settings.forceFailText : settings.forcePassText;
a.onclick = result === 'pass' ? enhance.forceFail : enhance.forcePass;
doc.getElementsByTagName('body')[0].appendChild(a);
}
}
function enhancePage() {
if (doc.documentElement.className.indexOf(settings.testName) === -1) {
doc.documentElement.className += ' ' + settings.testName;
}
if (settings.loadStyles.length) {
appendStyles();
}
if (settings.loadScripts.length) {
settings.queueLoading ? appendScriptsSync() : appendScriptsAsync();
}
}
function addIncompleteClass (){
var errorClass = settings.testName + '-incomplete';
if (doc.documentElement.className.indexOf(errorClass) === -1) {
doc.documentElement.className += ' ' + errorClass;
}
}
function appendStyles() {
var index = -1,
item;
while ((item = settings.loadStyles[++index])) {
var link = doc.createElement('link');
link.type = 'text/css';
link.rel = 'stylesheet';
link.onerror = settings.onLoadError;
if (typeof item === 'string') {
link.href = item;
head.appendChild(link);
}
else {
for (var attr in item) {
if (attr !== 'iecondition') {
link.setAttribute(attr, item[attr]);
}
}
if (item['iecondition'] && isIE()) {
if (isIE(item['iecondition'])) {
head.appendChild(link);
}
}
else if (!item['iecondition']) {
head.appendChild(link);
}
}
}
}
function isIE(version) {
var isIE = (/MSIE (\d+)\.\d+;/).test(navigator.userAgent);
var ieVersion = new Number(RegExp.$1);
if(isIE && version){
if (version === 'all' || version == ieVersion) { return true; }
}
else{ return isIE; }
}
function appendScriptsSync() {
var queue = [].concat(settings.loadScripts);
function next() {
if (queue.length === 0) {
return;
}
var item = queue.shift();
script = createScriptTag(item),
done = false;
if(script){
script.onload = script.onreadystatechange = function() {
if (!done && (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete')) {
done = true;
next();
this.onload = this.onreadystatechange = null;
}
}
head.insertBefore(script, head.firstChild);
}
else{
next();
}
}
next();
}
function appendScriptsAsync() {
var index = -1,
item;
while ((item = settings.loadScripts[++index])) {
var script = createScriptTag(item);
if(script){
head.insertBefore(script, head.firstChild);
}
}
}
function createScriptTag(item) {
var script = doc.createElement('script');
script.type = 'text/javascript';
script.onerror = settings.onLoadError;
if (typeof item === 'string') {
script.src = item;
return script;
}
else {
for (var attr in item) {
if (attr !== 'iecondition') {
script.setAttribute(attr, item[attr]);
}
}
if (item['iecondition'] && isIE()) {
if (isIE(item['iecondition'])) {
return script;
}
}
else if (!item['iecondition']) {
return script;
}
else{
return false;
}
}
}
/*cookie functions from quirksmode.org*/
function createCookie(name, value, days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
doc.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = doc.cookie.split(';');
for (var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function eraseCookie(name) {
createCookie(name,"",-1);
}
function applyDocReadyHack() {
// verify that document.readyState is undefined
// verify that document.addEventListener is there
// these two conditions are basically telling us
// we are using Firefox < 3.6
if (doc.readyState == null && doc.addEventListener){
// on DOMContentLoaded event, supported since ages
doc.addEventListener("DOMContentLoaded", function DOMContentLoaded(){
// remove the listener itself
doc.removeEventListener("DOMContentLoaded", DOMContentLoaded, false);
// assign readyState as complete
doc.readyState = "complete";
}, false);
// set readyState = loading or interactive
// it does not really matter for this purpose
doc.readyState = "loading";
}
}
})(window, document);
/*
* EnhanceJS version 1.0a - Test-Driven Progressive Enhancement
* Copyright (c) 2010 Filament Group, Inc, authors.txt
* Licensed under MIT (license.txt)
*/
(function(win, doc) {
var settings, body, windowLoaded, head;
if(doc.getElementsByTagName){ head = doc.getElementsByTagName('head')[0] || doc.documentElement; }
else{ head = doc.documentElement; }
enhance = function(options) {
options = options || {};
settings = {};
// mixin settings
for (var name in enhance.defaultSettings) {
var option = options[name];
settings[name] = option !== undefined ? option : enhance.defaultSettings[name];
}
// mixin additional tests
for (var test in options.addTests) {
settings.tests[test] = options.addTests[test];
}
runTests();
applyDocReadyHack();
windowLoad(function() {
windowLoaded = true;
});
};
enhance.defaultTests = {
getById: function() {
return !!doc.getElementById;
},
getByTagName: function() {
return !!doc.getElementsByTagName;
},
createEl: function() {
return !!doc.createElement;
},
boxmodel: function() {
var newDiv = doc.createElement('div');
newDiv.style.cssText = 'width: 1px; padding: 1px;';
body.appendChild(newDiv);
var divWidth = newDiv.offsetWidth;
body.removeChild(newDiv);
return divWidth === 3;
},
position: function() {
var newDiv = doc.createElement('div');
newDiv.style.cssText = 'position: absolute; left: 10px;';
body.appendChild(newDiv);
var divLeft = newDiv.offsetLeft;
body.removeChild(newDiv);
return divLeft === 10;
},
floatClear: function() {
var pass = false,
newDiv = doc.createElement('div'),
style = 'style="width: 5px; height: 5px; float: left;"';
newDiv.innerHTML = '<div ' + style + '></div><div ' + style + '></div>';
body.appendChild(newDiv);
var childNodes = newDiv.childNodes,
topA = childNodes[0].offsetTop,
divB = childNodes[1],
topB = divB.offsetTop;
if (topA === topB) {
divB.style.clear = 'left';
topB = divB.offsetTop;
if (topA !== topB) {
pass = true;
}
}
body.removeChild(newDiv);
return pass;
},
overflow: function() {
var newDiv = doc.createElement('div');
newDiv.innerHTML = '<div style="height: 10px; overflow: hidden;"></div>';
body.appendChild(newDiv);
var divHeight = newDiv.offsetHeight;
body.removeChild(newDiv);
return divHeight === 10;
},
ajax: function() {
//factory test borrowed from quirksmode.org
var xmlhttp = false, index = -1, factory,
XMLHttpFactories = [
function() { return new XMLHttpRequest() },
function() { return new ActiveXObject("Msxml2.XMLHTTP") },
function() { return new ActiveXObject("Msxml3.XMLHTTP") },
function() { return new ActiveXObject("Microsoft.XMLHTTP") }
];
while ((factory = XMLHttpFactories[++index])) {
try { xmlhttp = factory(); }
catch (e) { continue; }
break;
}
return !!xmlhttp;
},
resize: function() {
return win.onresize != false;
},
print: function() {
return !!win.print;
}
};
enhance.defaultSettings = {
testName: 'enhanced',
loadScripts: [],
loadStyles: [],
queueLoading: true,
appendToggleLink: true,
forcePassText: 'View high-bandwidth version',
forceFailText: 'View low-bandwidth version',
tests: enhance.defaultTests,
addTests: {},
alertOnFailure: false,
onPass: function(){},
onFail: function(){},
onLoadError: addIncompleteClass
};
function cookiesSupported(){
var testCookie = 'enhancejs-cookietest';
createCookie(testCookie, 'enabled');
var result = readCookie(testCookie);
eraseCookie(testCookie);
return result === 'enabled';
}
enhance.cookiesSupported = cookiesSupported();
function forceFail() {
createCookie(settings.testName, 'fail');
win.location.reload();
}
if(enhance.cookiesSupported){ enhance.forceFail = forceFail; }
function forcePass() {
createCookie(settings.testName, 'pass');
win.location.reload();
}
if(enhance.cookiesSupported){ enhance.forcePass = forcePass; }
function reTest() {
eraseCookie(settings.testName);
win.location.reload();
}
if(enhance.cookiesSupported){ enhance.reTest = reTest; }
function runTests() {
var result = readCookie(settings.testName);
//check for cookies from a previous test
if (result) {
if (result === 'pass') {
enhancePage();
settings.onPass();
} else {
settings.onFail();
}
// append toggle link
if (settings.appendToggleLink) {
windowLoad(function() {
appendToggleLinks(result);
});
}
}
//no cookies - run tests
else {
bodyOnReady(function() {
var pass = true;
for (var name in settings.tests) {
pass = settings.tests[name]();
if (!pass) {
if (settings.alertOnFailure) {
alert(name + ' failed');
}
break;
}
}
result = pass ? 'pass' : 'fail';
createCookie(settings.testName, result);
if (pass) {
enhancePage();
settings.onPass();
} else {
settings.onFail();
}
// append toggle link
if (settings.appendToggleLink) {
windowLoad(function() {
appendToggleLinks(result);
});
}
});
}
}
function bodyOnReady(callback) {
var checkBody = setInterval(bodyReady, 1);
function bodyReady() {
if (doc.body) {
body = doc.body;
clearInterval(checkBody);
callback();
}
}
}
function windowLoad(callback) {
if (windowLoaded) {
callback();
} else {
var oldonload = win.onload
win.onload = function() {
if (oldonload) { oldonload(); }
callback();
}
}
}
function appendToggleLinks(result) {
if (!settings.appendToggleLink || !enhance.cookiesSupported) { return; }
if (result) {
var a = doc.createElement('a');
a.href = "#";
a.className = settings.testName + '_toggleResult';
a.innerHTML = result === 'pass' ? settings.forceFailText : settings.forcePassText;
a.onclick = result === 'pass' ? enhance.forceFail : enhance.forcePass;
doc.getElementsByTagName('body')[0].appendChild(a);
}
}
function enhancePage() {
if (doc.documentElement.className.indexOf(settings.testName) === -1) {
doc.documentElement.className += ' ' + settings.testName;
}
if (settings.loadStyles.length) {
appendStyles();
}
if (settings.loadScripts.length) {
settings.queueLoading ? appendScriptsSync() : appendScriptsAsync();
}
}
function addIncompleteClass (){
var errorClass = settings.testName + '-incomplete';
if (doc.documentElement.className.indexOf(errorClass) === -1) {
doc.documentElement.className += ' ' + errorClass;
}
}
function appendStyles() {
var index = -1,
item;
while ((item = settings.loadStyles[++index])) {
var link = doc.createElement('link');
link.type = 'text/css';
link.rel = 'stylesheet';
link.onerror = settings.onLoadError;
if (typeof item === 'string') {
link.href = item;
head.appendChild(link);
}
else {
for (var attr in item) {
if (attr !== 'iecondition') {
link.setAttribute(attr, item[attr]);
}
}
if (item['iecondition'] && isIE()) {
if (isIE(item['iecondition'])) {
head.appendChild(link);
}
}
else if (!item['iecondition']) {
head.appendChild(link);
}
}
}
}
function isIE(version) {
var isIE = (/MSIE (\d+)\.\d+;/).test(navigator.userAgent);
var ieVersion = new Number(RegExp.$1);
if(isIE && version){
if (version === 'all' || version == ieVersion) { return true; }
}
else{ return isIE; }
}
function appendScriptsSync() {
var queue = [].concat(settings.loadScripts);
function next() {
if (queue.length === 0) {
return;
}
var item = queue.shift();
script = createScriptTag(item),
done = false;
if(script){
script.onload = script.onreadystatechange = function() {
if (!done && (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete')) {
done = true;
next();
this.onload = this.onreadystatechange = null;
}
}
head.insertBefore(script, head.firstChild);
}
else{
next();
}
}
next();
}
function appendScriptsAsync() {
var index = -1,
item;
while ((item = settings.loadScripts[++index])) {
var script = createScriptTag(item);
if(script){
head.insertBefore(script, head.firstChild);
}
}
}
function createScriptTag(item) {
var script = doc.createElement('script');
script.type = 'text/javascript';
script.onerror = settings.onLoadError;
if (typeof item === 'string') {
script.src = item;
return script;
}
else {
for (var attr in item) {
if (attr !== 'iecondition') {
script.setAttribute(attr, item[attr]);
}
}
if (item['iecondition'] && isIE()) {
if (isIE(item['iecondition'])) {
return script;
}
}
else if (!item['iecondition']) {
return script;
}
else{
return false;
}
}
}
/*cookie functions from quirksmode.org*/
function createCookie(name, value, days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
doc.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = doc.cookie.split(';');
for (var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function eraseCookie(name) {
createCookie(name,"",-1);
}
function applyDocReadyHack() {
// verify that document.readyState is undefined
// verify that document.addEventListener is there
// these two conditions are basically telling us
// we are using Firefox < 3.6
if (doc.readyState == null && doc.addEventListener){
// on DOMContentLoaded event, supported since ages
doc.addEventListener("DOMContentLoaded", function DOMContentLoaded(){
// remove the listener itself
doc.removeEventListener("DOMContentLoaded", DOMContentLoaded, false);
// assign readyState as complete
doc.readyState = "complete";
}, false);
// set readyState = loading or interactive
// it does not really matter for this purpose
doc.readyState = "loading";
}
}
})(window, document);
发表评论
-
六大Flash 破解(swf转fla)、反编译、加密等常用到的工具集锦
2011-08-17 12:17 49291、flashcacher - flash整站下载利器 该工具 ... -
log4j配置说明
2010-05-07 09:24 856在具体Java编程使用Log4j可以参照以下示例:1、 建立L ... -
10个免费的图表生成代码
2010-04-20 09:38 820Flot – Flot 为 jQuery ... -
Web 开发与设计之 Google 兵器谱[转]
2010-04-20 08:23 680Google 的使命是 Web,在 G ... -
IETester+DebugBar+Companion.JS
2010-03-23 16:46 4954IETester http://www.my-debugbar ... -
HTML使用的十宗罪
2009-11-26 11:46 686第一宗罪:内联元素嵌 ... -
4个跨浏览器必备的函数
2009-11-26 11:34 796如果你的项目要用到 JavaScript,而你不使用任何 J ... -
开源的 JavaScript 复制库类 Zero Clipboard
2009-11-26 11:19 1520开发中经常会用到复制的功能,在 IE 下实现比较简单。但要想做 ... -
Flash CS4 Professional 10.0.2简体中文版下载地址
2009-09-15 09:26 7376来自:http://hi.baidu.com/52017/bl ... -
application/rss+xml
2009-09-08 14:45 1496<link rel="alternate&qu ... -
meta标签verify-v1
2009-09-08 14:32 1213网页里加有类似 <meta name="ver ... -
HTML xmlns 属性
2009-09-08 14:31 1501mlns 属性 xmlns 属性可以在文档中定义一个或多个可 ... -
HTML <!DOCTYPE> 标签
2009-09-08 14:29 656<!DOCTYPE> 声明位于文档中的最前面的位置 ... -
javascript获取网页URL地址及参数等
2009-09-02 09:43 2255先看一个示例 用javascript获取url网址信息 & ... -
HTML5预览
2009-06-23 11:37 1057原文:http://www.alistapart.com/ar ...
相关推荐
【标题】基于HTML5、Vue.js、Koa、Node.js及EJS的手机小说阅读器是一种现代化的在线阅读平台,利用前沿的Web技术为用户提供流畅的阅读体验。这个项目结合了多种技术,构建了一个功能丰富的手机小说阅读环境。 ...
【标题】:“Node.js-制作一个阅读体验舒适的Hexo博客主题” 在当今互联网时代,个人博客成为分享知识、表达观点的重要平台。Hexo是一个基于Node.js的静态站点生成器,它以其高效、简洁的设计和丰富的插件系统深受...
实现JavaScript PDF阅读器的关键技术可能包括PDF.js,这是一个由Mozilla开发的开源库,专门用于在浏览器中显示PDF文档。它使用HTML5和Canvas元素来渲染PDF内容,并且能够处理分页、缩放、搜索等功能。此外,为了提高...
JavaScript阅读清单 这是要阅读JavaScript代码库的集合。 根据粗略的大小将它们分为3类。 较短的代码库(小于1000行的JS) 名称 描述 LOC 星星 道格拉斯·克罗克福德(Douglas Crockford)的JSON实现 约800 国家...
【华旭金卡身份证阅读器js调用案例】 在当今数字化时代,身份证阅读器已经成为许多企业和机构必不可少的设备,尤其对于需要验证用户身份的场景。华旭金卡身份证阅读器是一款高效、便捷的身份证信息读取工具,它能...
总之,利用JavaScript的PDF.js库,我们可以创建一款功能丰富的电脑端在线PDF阅读器。通过不断优化和定制,可以满足用户的各种需求,提供流畅、便捷的阅读体验。记得持续关注PDF.js的更新,以利用最新的特性和修复。
1. **语法高亮**:JSEditor为JavaScript代码提供色彩鲜明的语法高亮,使得代码更易于阅读和理解。不同的关键字、变量、函数等会以不同的颜色显示,帮助开发者快速识别代码结构。 2. **代码自动完成**:JSEditor包含...
【标题】"基于turn.js库电子书在线阅读源码"是一个专为实现在线电子书阅读体验的项目。这个源码利用了turn.js库,该库是JavaScript的一个强大工具,能够创建具有真实翻页效果的数字杂志、电子书和其他文档。通过这个...
PDF.js是Mozilla团队开发的一个开源JavaScript库,用于在Web浏览器中渲染PDF文档,无需依赖任何插件。这个项目的目标是提供一个高质量、跨平台的PDF查看体验,支持现代Web浏览器,包括Chrome、Firefox、Safari、Edge...
Epub.js阅读器关于读者库。入门在浏览器中打开 。 您可以通过在URL中传递到bookPath的链接来更改它打开的ePub: ?bookPath=https://s3.amazonaws.com/epubjs/books/alice.epub 本地运行安装 然后使用npm安装项目依赖...
"js在线阅读pdf(手机端)"这个主题涉及到的技术主要包括JavaScript库PDF.js和针对移动优化的用户界面设计。PDF.js是由Mozilla开发的一个开源库,旨在提供高质量的PDF文档在浏览器中的渲染能力,无需依赖任何第三方...
EchoJS阅读器 使用React Native构建的开源阅读器。 安装 单击上方的徽章以从Apple App Store或Google Play安装它。 Android用户还可以从下载APK文件并手动安装。 屏幕截图 执照 阿帕奇2.0
PDF.js是Mozilla开发的一个开源项目,旨在提供一个纯JavaScript实现的PDF阅读器,能够在浏览器中直接解析和渲染PDF文件,无需依赖任何插件。这使得用户可以在任何支持HTML5的浏览器上查看PDF文档,提高了网页的兼容...
jsfive:纯JavaScript的HDF5文件阅读器jsfive是一个库,用于使用纯JavaScript(例如,在浏览器中)读取(当前不编写)HDF5文件。 它基于HDF5阅读器的纯python实现。 不支持HDF5的所有功能,但某些关键功能包括: ...
能够格式化凌乱的js,便于阅读 ,能够格式化凌乱的js,便于阅读
JavaScript,简称JS,是一种轻量级的解释型编程语言,广泛应用于网页和互联网应用开发。作为客户端脚本语言,它可以直接在用户的浏览器上运行,无需服务器...对于JS初学者,阅读官方文档和实践案例是很好的学习途径。
开发者可以通过解压这个压缩包,查看源码、阅读文档,甚至运行测试来了解和使用pinyin4js库。 **综合知识点总结:** 1. **pinyin4js** 是一个JavaScript库,用于将汉字转换为拼音。 2. 该库**无任何外部依赖**,...
2. **HTML高亮展示**:jsdiff能够生成HTML格式的差异报告,其中高亮显示了变化的部分,便于阅读和理解。 3. **多种比较模式**:除了基本的字符差异,jsdiff还支持行级比较、块级比较,以及针对整段文本的比较。 4....