如何在加载时运行Chrome扩展程序?

时间:2014-01-09 03:09:54

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

我有一个Chrome扩展程序,当前点击时会打开侧边菜单。到目前为止工作正常,但我试图将它绑定到一个键。这工作正常,但只有在我点击按钮至少一次之后,因为那时它从后台JS页面注入了JS

chrome.browserAction.onClicked.addListener(clicked)

呼叫:

var opened = [];

function clicked(tab){
    var currentTabId = tab.id;
    if(opened.indexOf(currentTabId) < 0){
        opened.push(currentTabId);

        chrome.tabs.executeScript({
            file: 'jquery.js'
        });
        chrome.tabs.insertCSS({
            file: 'admin.css'
        });
        chrome.tabs.executeScript({
            file: 'admin.js'
        });
    } else {
        chrome.tabs.executeScript({
            code: 'admin.toggle();'
        });
    }
}

这一切都很棒。 Admin.js也会侦听波浪号~按钮以打开侧抽屉(它调用相同的admin.toggle()功能)。但问题是我需要在第一次按钮点击之前注入JS,因此它知道要监听~

我仍然可以使用browserAction执行此操作吗?或者我需要使用内容脚本吗?

提前致谢!

1 个答案:

答案 0 :(得分:1)

当用户单击浏览器操作按钮时,将触发浏览器操作。所以没有办法(也没有意义)以编程方式触发它。

您已经在使用内容脚本(通过executeScript注入的文件和代码)是内容脚本(只需 programmatically injected )。

如果您希望“立即”使用该功能,则需要在用户导航到新的网页时自动注入一些内容脚本。

实现此目标的一种方法是通过 manifest.json 中的 content_scripts property

如果您不想在每个网页中注入jQuery和admin.js(特别是如果您的脚本“很重”,例如注册了大量的事件监听器等),您可以注入一个小脚本侦听~,然后取消注册侦听器,注入脚本并执行admin.toggle()