在某些页面上,我的 Chrome 扩展程序会注入(inject)一些代码,这些代码会抓取一些 DOM 节点的文本并将其发送到后台脚本。
这样的节点只有在单击触发异步调用的按钮后才可见 - 它是一个小的弹出 div
,在单击后几毫秒出现。
我考虑过在我的内容脚本中复制按钮的 onClick
代码,但是 js 非常复杂且丑陋,所以我还无法弄清楚调用在做什么。我也不确定是否可以从内容脚本访问网站 js 的命名空间。
我现在的计划是只调用按钮的 .click()
方法并抓取生成的 div
,但抓取器找不到 div
.
我认为这可能是异步延迟问题,因此为了测试这一点,我设置了很长的超时:
document.querySelector('#buttonId').click();
setTimeout(console.log(document.querySelector('#popupDiv').innerText), 4500);
不幸的是,延迟函数仍然返回null
。
有没有更好的方法来实现这一点?
最佳答案
当使用带有 ids 的 querySelector 时,需要在它们前面添加“#”。
您还需要将超时包装在匿名函数中。
document.querySelector("#buttonId").click()
setTimeout(function() {
console.log(document.querySelector("#popupDiv").textContent)
}, 4500)
关于javascript - Chrome扩展程序内容脚本: click() and async results,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36524802/