javascript - 使用 window.open(自 Chrome 45 起)打开新标签时,是否共享 Chrome 扩展内容脚本范围?

标签 javascript google-chrome google-chrome-extension

我有一个扩展程序,在 Chrome 的最新更新 (45) 之前一直可以正常工作。

问题是过去为每个选项卡单独加载的内容脚本现在似乎在打开的选项卡和它的打开选项卡之间共享范围(当使用 window.open 时),只要新选项卡在同一个域作为开场白。

有趣的是,直到今天,当我的 Chrome 更新到最新的稳定版本 (45) 时,情况才如此,但我无法在发行说明中找到任何关于此的信息(很可能是我错过了)。

我的问题是这是否确实是新 Chrome 的一个变化?如果是,我该如何防止这种情况发生或解决它?

最佳答案

根据内容脚本的作用,可能有不同的方法来解决问题。

到目前为止,我注意到在 Chrome 45 中,发送到 tabIdchrome.tabs.sendMessage(tabId, {message:"text"}) 也被此选项卡的打开器选项卡的内容脚本和解决方法是(暗示您要将消息发送到主框架的内容脚本):

try {chrome.tabs.sendMessage(tabId, message, {frameId: 0})} // throws on Chrome prior to 41
catch(e) {chrome.tabs.sendMessage(tabId, message)}

我认为这是一个错误,显然它是在 this fix 中引入的的 this bug .

关于javascript - 使用 window.open(自 Chrome 45 起)打开新标签时,是否共享 Chrome 扩展内容脚本范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32443547/

相关文章:

javascript - Npm 包在 CSS 中包含图像

javascript - 何时以及为何需要 background.html 或 background.js?

javascript - Google chrome - chrome.serial 连接失败

javascript - Chrome 扩展程序可以使用客户端存储吗

javascript - jQuery DIV 在悬停时扩展,在鼠标移开时收缩

javascript - 计算中位数 - javascript

javascript - React-Select onClick 多标签防止打开下拉菜单

javascript - Javascript 的 __defineSetter__ 的奇怪行为

google-chrome - 在 Ubuntu 上运行 headless chrome

java - 将视频流渲染为部分内容而不是完整流到 chrome