Chrome DevTools扩展程序在不同选项卡中打开时加载两次

时间:2016-02-22 00:50:38

标签: javascript google-chrome google-chrome-extension

我正在DevTools中构建Chrome扩展程序。除非我在另一个标签中打开它,否则它很有效。当它在另一个选项卡中打开时,它会为DevTools扩展打开的每个实例加载我的inserted-script.js文件。可能是什么导致了这个?我很乐意分享我的能力,但我不确定从哪里开始。

编辑:这是manifest.json文件:

{
    "name": "My DevTools Thing",
    "version": "0.5",
    "description": "Hello.",
    "devtools_page": "devtools.html",
    "background": {
        "scripts": [
            "js/background.js"
        ]
    },
    "permissions": [
        "activeTab",
        "http://*/*",
        "https://*/*"
    ],
    "web_accessible_resources": [
        "js/content.js"
    ],
    "manifest_version": 2
}

编辑2:添加一些进一步的上下文 - 假设我在选项卡1上打开了devTools,它显示“Hello!”。它第一次打开时会显示一次。

然后我打开一个新标签,打开devTools,然后我的扩展名,它显示:

“你好!”

“你好!”

在我的原始标签上,它现已附加:

“你好!” (原文)

“你好!” (来自新标签)

“你好!” (来自新标签)

如果我打开第三个标签并打开扩展程序......

“你好!” x 3(新标签)

其他标签将附加原始的3“Hello!”。

1 个答案:

答案 0 :(得分:0)

您可以使用扩展程序的清单文件控制内容脚本执行,防止内容脚本加载到Iframe或一组特定网址中。以下是清单文件的示例:

"all_frames": true,
"js": [ "ContentOnDocStart.js" ],
"matches": [ "http:///", "https:///" ],
"exclude_matches": [ ],
"run_at": "document_start"

此外,请在每个标签state changes中添加' chrome.tabs.onUpdate.addListener '。