如何在当前选项卡中停止内容脚本执行?

时间:2017-07-17 08:14:23

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

我正在使用谷歌Chrome扩展程序,我遇到了一个我自己无法解决的错误。

按预期在单个Youtube选项卡上切换到Youtube的暗模式,但如果您在Youtube上并且 Ctrl / Cmd 单击链接(在新选项卡中打开),{{1再次触发,当前选项卡变为白色,新选项卡显示为黑色。

如果您处于黑色标签中,“子”标签应自动变暗。

的manifest.json:

content.js

background.js:

{
    "manifest_version": 2,

    "permissions": [
        "https://www.youtube.com/*",
        "activeTab"
    ],

    "background": {
        "scripts": ["background.js"],
        "persistant": false
    },

    "browser_action": {
        "default_title": "Engage Youtube Dark Mode."
    },

    "content_scripts": [
    {
      "matches": ["https://www.youtube.com/*"],
      "js": ["content.js"]
    }]
}

content.js:

//var alreadyTriggered = false;

chrome.browserAction.onClicked.addListener(function(tab) {
    chrome.tabs.executeScript(null, {file: "clicker.js"});
});
/*
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
    alreadyTriggered = false;
});*/

chrome.runtime.onMessage.addListener(function(response, sender, sendResponse) {
    //if (!alreadyTriggered) {
        chrome.tabs.executeScript(null, {file: "clicker.js"});
        //alreadyTriggered = true;
    //};
    return true;
});

我猜我错误地使用了var myDate = new Date(); if ((myDate.getHours() <= 7) || (myDate.getHours() >= 19)) { var darkMode = document.body.getAttribute("dark"); if (!darkMode) { chrome.runtime.sendMessage(window.location.href, function(result) {}); }; }; 。任何帮助将不胜感激。谢谢!

clicker.js:

activeTab

1 个答案:

答案 0 :(得分:0)

最终为我工作的是使用以下组合: 使用window.onload = doStuff();

并确保darkMode的值为null,而不是undefined

希望这可以帮助那些无休止地调整代码的人。