这是一个Chrome扩展JS,我想比较DOM树结构之间DOM加载所有这些文件loaded.Here我声明两个变量第一,然后它会运行到这2名听众。但txt1不会将值保留在第一个侦听器中,无论使用var还是window声明。那么我怎样才能保持全球价值呢?或者我可以用其他方式绕过它吗?如何保持全局变量不变,JS
function tw1(){
var treeWalker = document.createTreeWalker(document,NodeFilter.SHOW_ELEMENT,{ acceptNode: function(node) { return NodeFilter.FILTER_ACCEPT; } },false);
var ar = new Array();
var count=0;
while(treeWalker.nextNode()) {
ar[count]=treeWalker.currentNode.nodeName;
count++;
console.log(treeWalker.currentNode.nodeName);
}
var txt="";
for (var i=0;i<count;i++)
{
txt=txt+ar[i]+i+"\t";
}
//console.log(txt);
return txt;
}
function compare(str,str0)
{
if(str.indexOf(str0) == 0&& str0.indexOf(str) == 0)
{
return 0;
}
else
{
return 1;
}
}
window.txt1="";
window.txt2="";
document.addEventListener('DOMContentLoaded', function() {
window.txt1=tw1();
}, false);
window.addEventListener('load', function() {
window.txt2=tw1();
console.log(window.txt1);
console.log(window.txt2);
if(compare(window.txt1,window.txt2)!=0)
alert("This page is possibly malicious.");
}, false);
对不起,我不明白的问题。 “保持全球价值”是什么意思?你想让它保持空弦吗?另外,你在哪里定义'tw1'? –
@Asad tw1()是遍历DOM树的函数并返回一个String,我把它放在这些代码之前。在第二个监听器中,txt1是“”,尽管当第一个监听器执行时它是一个很长的String。 – user1261718
@ user1261718:发布*全部*您的代码。 – Blender