這是一個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