Chrome扩展程序/根据popup.html中的选择执行不同的内容脚本

时间:2016-02-11 19:24:21

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

我需要使用以下行为进行扩展。 popup.html应该有两个按钮或两个单选按钮(按钮更容易,因为我不必像收音机一样保存所选的值),并且根据用户选择,我必须执行一个或另一个脚本。此外,在加载任一个脚本并且用户想要使用另一个脚本之后,我必须重新加载页面以“卸载”前一个。任何人都可以给我一个方法来实现这个目标吗?

目前我有这个:

popup.js

$(document).ready(function() {
    var firstTime = true;
    $("input[name='method']").change(function() {
       if($(this).val() === "events") {
            if(!firstTime) {
                chrome.tabs.reload(null, null, function(){
                    chrome.tabs.executeScript(null, {file: "content_events.js", runAt: "document_end"});
                });
            } else {
                chrome.tabs.executeScript(null, {file: "content_events.js", runAt: "document_end"});
                firstTime = false;
            }
        } else {
            if(!firstTime) {
                chrome.tabs.reload(null, null, function(){
                    chrome.tabs.executeScript(null, {file: "content_timer.js", runAt: "document_end"});
                });
            } else {
                chrome.tabs.executeScript(null, {file: "content_timer.js", runAt: "document_end"});
                firstTime = false;
            }
        }
    });
});

的manifest.json

"permissions": [
"tabs",
"activeTab",
"<all_urls>"
],

第一次正确加载脚本,但是当我更改它时页面重新加载但新脚本未加载(我认为它是在页面刷新之前加载的)。我尝试了runAt属性的所有可能性,也没有它。我试过没有在tabs.reload的回调函数中注入脚本而没有运气。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

看起来您希望根据变量的值将Javascript文件注入页面。您可以使用 chrome.tabs.onUpdated 方法设置侦听器,然后调用 chrome.tabs.executeScript 以根据变量的值注入正确的文件。如果您计划在脚本中执行任何DOM操作,请务必侦听窗口加载事件。