Chrome 확장 JS입니다.로드 된 DOM과로드 된 모든 파일 사이의 DOM 트리 구조를 비교하고 싶습니다. 두 변수를 먼저 선언 한 다음이 두 수신기에 실행합니다. 그러나 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은 ""이지만 첫 번째 리스너가 실행될 때 긴 문자열입니다. – user1261718
@ user1261718 : 모든 코드 게시 * – Blender