javascript - Chrome扩展程序内容脚本: click() and async results

标签 javascript google-chrome-extension web-scraping

在某些页面上,我的 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/

相关文章:

javascript - 在 promise 中使用这个

javascript - Puppeteer 和 Google Chrome headless : influence of CSS @media on rendered PDF

javascript - 将回调传递给 chrome.storage.sync.get

google-chrome-extension - 使用 Chrome 扩展程序覆盖下载文件类型

java - 获取亚马逊页面和产品信息的最佳方式

html - Python 请求 - 填写表格

javascript - 将 JavaScript 倒计时转换为 jQuery 倒计时并添加间隔

javascript - 天空盒未出现,但立方体出现

javascript - 获取 HTML 元素的值

google-chrome - 加载存储在 chrome 扩展中的 Assets