【发布时间】:2020-09-08 04:37:09
【问题描述】:
我正在尝试在来自 Google chrome 扩展的内容脚本中循环浏览网页的 DOM 元素。问题是结果列表有时会有所不同,我怀疑这是因为脚本标记为异步,但由于进程应该以 window.onload 开头,这对我来说没有任何意义。有谁明白为什么会发生这种情况? 编辑 :: 我开始认为这可能是因为我将 window.onload 函数标记为异步。那会是问题吗?
javascript代码如下。它为脚本添加了“2”,为 iframe 添加了“1”,为其他添加了“-1”(稍后将忽略“-1”)。
async function exam(element){
if (element.nodeName == 'SCRIPT'){
return '2';
}else if (element.nodeName == 'IFRAME'){
return '1';
}else{
return '-1';
}
}
async function domExam(element, list) {
let res = await exam(element);
if(res != '-1'){
list.push(res);
}
let chNodes = element.children;
if (chNodes.length > 0 ){
for (let item of chNodes){
list = await domExam(item, list);
}
return list;
}else{
return list;
}
}
window.onload = async function(){
list = await domExam(document, []);
console.log("List::", list);
}
【问题讨论】:
标签: javascript dom google-chrome-extension async-await onload