Javascript 我能';t从Chrome扩展弹出窗口访问网页DOM
我正在努力为我的Chrome扩展访问网页的DOM 在我做的一个扩展中,我的扩展从Javascript 我能';t从Chrome扩展弹出窗口访问网页DOM,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我正在努力为我的Chrome扩展访问网页的DOM 在我做的一个扩展中,我的扩展从content.js文件中解析DOM,没有问题。这在页面加载时发生。用户根本不需要交互/打开扩展,它只需要在后台运行 现在我试着用一个按钮来触发它。这意味着用户将单击浏览器中的扩展图标,popup.html将显示一些html(包括按钮) 这就是我的问题所在。当我现在尝试访问DOM时(通过按钮的单击事件),它显示popup.html的DOM,而不是web页面(活动选项卡) 因此,快速浏览一下文档(我承认我很难处理这些文
content.js
文件中解析DOM,没有问题。这在页面加载时发生。用户根本不需要交互/打开扩展,它只需要在后台运行
现在我试着用一个按钮来触发它。这意味着用户将单击浏览器中的扩展图标,popup.html
将显示一些html(包括按钮)
这就是我的问题所在。当我现在尝试访问DOM时(通过按钮的单击事件),它显示popup.html的DOM,而不是web页面(活动选项卡)
因此,快速浏览一下文档(我承认我很难处理这些文档)就会发现这可能是一个权限问题。在manifest.json文件中,我添加了
"permissions": [
"activeTab"
],
这没用:(
因此,在这个新的扩展中,我没有使用background.js或content.js。我想这就是问题所在,因为我调用的javascript嵌入在HTML弹出窗口中!这对我来说很有意义(关于我的行为)
如何从HTML弹出窗口访问活动选项卡的DOM访问页面DOM的唯一方法是使用内容脚本。由于您已设置了
activeTab
权限,因此可以通过省略第一个参数(tabId
)将内容脚本插入活动选项卡
以下是一个例子:
chrome.tabs.executeScript({ file: "content.js" });
我也遇到过同样的问题,我点击按钮打开一个弹出窗口,然后如何访问弹出窗口的内容。是的,你需要使用内容脚本,但我做的一个技巧是,当弹出窗口打开时,使用window.name并获取该窗口的名称。然后你可以通过var test=window.name引用该弹出窗口(“‘该窗口的名称’)。然后您可以从测试中引用弹出窗口的dom元素。对于我来说,如果需要包含一些代码来更好地解释,请告诉我。访问页面dom的唯一方法是使用内容脚本。由于您已设置了
activeTab
权限,因此可以通过省略f将内容脚本插入活动选项卡第一个参数(tabId
)。非常清晰。谢谢@Titus。我是删除还是移动到答案?我将添加答案。