我无法从弹出的Chrome扩展程序访问网页DOM

时间:2019-09-25 09:43:44

标签: javascript google-chrome-extension

我正在努力访问Chrome扩展程序网页的DOM。

在我进行的一个扩展中,我的扩展解析了content.js文件中的DOM,而没有任何问题。这是在页面加载时发生的。用户完全不需要交互/打开扩展,只需要在backgorund中运行即可。

现在,我正尝试通过按钮触发此操作。这意味着用户将单击浏览器中的扩展程序图标,而popup.html将显示一些HTML(包括按钮)。

这是我的问题所在。现在,当我尝试访问DOM(通过按钮的click事件)时,它显示的是popup.html的DOM,而不是网页(活动标签)。

因此,快速浏览一下文档(我很乐意承认我在与之斗争)表明这可能是权限问题。在我的manifest.json文件中,添加了

"permissions": [
"activeTab"
],

这没有帮助:(

所以在这个新扩展中,我没有使用background.js或content.js ..我想这是问题所在,因为我要调用的javascript嵌入了HTML弹出窗口!这对我来说很有意义(关于我得到的行为)。

如何从HTML弹出窗口访问活动标签的DOM

2 个答案:

答案 0 :(得分:1)

访问页面DOM的唯一方法是使用内容脚本。由于您已经设置了activeTab权限,因此可以使用chrome.tabs.executeScript通过省略第一个参数(tabId)将内容脚本注入到活动选项卡中。

这里是一个例子:

chrome.tabs.executeScript({ file: "content.js" });

答案 1 :(得分:0)

我遇到了同样的问题,我单击按钮打开一个弹出窗口,然后如何访问弹出窗口的内容。是的,您将需要使用内容脚本,但是我完成此操作的一个技巧是打开弹出窗口时,使用window.name并获取该窗口的名称。然后,您可以通过var test = window.name('','该窗口的名称')引用该弹出窗口。然后,您可以从测试中引用弹出窗口的dom元素。为我工作,请告诉我是否需要包含一些代码以更好地进行解释。