我正在创建一个实时HTML编辑器,它在渲染DOM后加载,并通过循环遍历所有节点来构建源.我注意到当我尝试读取包含HTML实体的文本节点的nodeValue时,我总是得到该实体的渲染unicode值.
如何读取呈现的文本节点,并保留HTML实体代码?(使用香草JS)
例:
<div id="test">copyright ©</div>
<script>
var test = document.getElementById('test');
console.log(test.childNodes[0].nodeValue);
// expected: copyright ©
// actual: copyright ©
</script>
Run Code Online (Sandbox Code Playgroud) 我正在为我正在制作的网站创建一个加载屏幕.该网站加载了许多图像,脚本等.HTML和CSS部分很棒,但我需要一种方法来保证"加载..."图像将被加载到其他任何东西之前.
我正在使用jQuery,一切都在内部启动$(function () { ... });
.我想这个代码需要在该块之前/之外调用,并且删除加载屏幕的代码将在该块的最后调用.目前,加载图像被设置为DIV背景,这是我喜欢的方式.但是,如果它是完全必要的,我会选择IMG标签.
更新:(解决方案)
我能够通过结合罗宾和弗拉德的回答来回答我自己的问题.两者都非常好,并且答案很好,但问题是它们的目的是在另一个图像之前加载图像,而不是在其他任何图像之前加载图像.(CSS,JS等......)
这是我提出的脏版本:
var files = [new Image(), document.createElement('link'), document.createElement('script')];
files[0].setAttribute('src', 'images/loading.gif');
files[1].setAttribute('rel', 'stylesheet');
files[1].setAttribute('type', 'text/css');
files[1].setAttribute('href', 'test.css');
files[2].setAttribute('type', 'text/javascript');
files[2].setAttribute('src', 'js/jquery-1.5.1.min.js');
window.onload = function (e) {
document.getElementsByTagName('head')[0].appendChild(files[1]);
document.getElementsByTagName('head')[0].appendChild(files[2]);
}
Run Code Online (Sandbox Code Playgroud)
查看Chrome开发者控制台网络选项卡上的加载顺序,首先加载'loading.gif',然后加载4个虚拟图像,然后加载'test.css',然后加载'jquery.1.5.1.min.js ".在将CSS和JS文件插入head标记之前,它们不会开始加载.这正是我想要的.
我预测,当我开始加载文件列表时,我可能会遇到一些问题.Chrome报告有时首先加载JS文件,但大多数情况下首先加载CSS文件.这不是问题,除非我开始添加要加载的文件,我需要确保在使用jQuery的脚本文件之前加载jQuery.
如果有人有这方面的解决方案,或者使用此方法检测CSS/JS文件何时完成加载的方法,那么请评论.虽然,我不确定它会成为一个问题.如果我开始遇到问题,我可能需要在将来提出一个新问题.
感谢所有帮助解决此问题的人.
更新:(故障修复)
我最终遇到了这个方法的很多问题,因为脚本文件是异步加载的.如果我清除浏览器缓存,然后加载页面,它将首先完成加载我的jquery相关文件.然后,如果我刷新页面,它将工作,因为jquery是从缓存加载的.我通过设置要加载的文件数组,然后将加载脚本放入函数中来解决这个问题.然后我将使用以下代码逐步执行每个数组项:
element.onload = function() {
++i; _step();
}
element.onreadystatechange = function() {
if (("loaded" === element.readyState || "complete" === element.readyState)) { ++i; _step(); }
}
Run Code Online (Sandbox Code Playgroud) 我试图重现jQuery的(1.7.1)对象结构,以更好地理解它是如何工作的.我有以下代码:
(function (window, undefined) {
var document = window.document,
navigator = window.navigator,
location = window.location;
window.myclass = (function () {
var __con = function () {
return new __con.fn.init();
}
__con.fn = __con.prototype = {
'init' : function () {
return this;
},
'test' : function () {
console.log('test1');
return this;
}
}
__con.fn.init.prototype = __con.fn;
__con.test = function () {
console.log('test2');
return this;
}
return __con;
})();
})(window);
Run Code Online (Sandbox Code Playgroud)
我的控制台看起来像这样:
> myclass().test();
test1
< __con.fn.__con.init
> myclass.test();
test2
< function …
Run Code Online (Sandbox Code Playgroud) 我有两个文件:旧的和新的.我需要从New中删除Old包含的任何条目.所以我将这两个文件导出到制表符分隔的文本文件,然后合并两个文本文件,以便现在我有许多重复的条目.我的希望是我可以想出一些公式只显示重复的值,这样我就可以从那里删除它们.现在我怎样才能从现在的角度出发?
示例旧:
[41] [john] [smith]
[732] [bill] [murry]
[234] [adam] [sandler]
[9029] [tim] [allen]
Run Code Online (Sandbox Code Playgroud)
示例新:
[10422] [bill] [gates]
[11456] [steve] [ballmer]
[732] [bill] [murry]
[24510] [jimmy] [jones]
[41] [john] [smith]
[234] [adam] [sandler]
[78241] [funny] [bunny]
[9029] [tim] [allen]
Run Code Online (Sandbox Code Playgroud)
合并示例:
[10422] [bill] [gates]
[11456] [steve] [ballmer]
[732] [bill] [murry]
[732] [bill] [murry]
[24510] [jimmy] [jones]
[41] [john] [smith]
[41] [john] [smith]
[234] [adam] [sandler]
[234] [adam] [sandler]
[78241] [funny] [bunny]
[9029] [tim] [allen]
[9029] [tim] [allen]
Run Code Online (Sandbox Code Playgroud)
我想要展示的例子:
[732] [bill] [murry] …
Run Code Online (Sandbox Code Playgroud) 我错误.prototype
的应该做什么,或者这只是不工作?
window.dump = function () {
for (var i = 0, x = dump.list.length; i < x; ++i) console.log.apply(this, dump.list[i]);
if (arguments.length && typeof arguments[0] === 'boolean' && arguments[0]) dump.purge();
}
dump.prototype = {
list : [],
log : function () {
dump.list.push(arguments);
},
purge : function () {
dump.list = [];
}
}
dump.log('test1');
dump.log('test2');
dump();
Run Code Online (Sandbox Code Playgroud)
我希望传递"test1"和"test2" console.log
,而dump.log
不是定义.不过dump.prototype.log
是.
编辑:我已经尝试了以下,我似乎无法让这个原型正确.
window.dump = new function () {
this.list = [];
this.log = function () …
Run Code Online (Sandbox Code Playgroud) javascript ×4
jquery ×2
class ×1
css ×1
duplicates ×1
excel ×1
filter ×1
formula ×1
html ×1
prototype ×1