page_action在开发人员模式下不起作用

时间:2012-12-19 20:04:02

标签: javascript html google-chrome-extension manifest google-chrome-devtools

问题很简单:如果为chrome做扩展并使用

chrome.pageAction

将图标放在地址栏中,此扩展程序在developmode中不起作用。为什么不呢?

background.html

<script language="javascript">

chrome.pageAction.onClicked.addListener(function (tab) {
    chrome.tabs.executeScript(tab.id, {
        file: "jquery.js"
    }, function () {
        chrome.tabs.executeScript(tab.id, {
            code: '$[CODE JQUERY];'
        });
    });
});

chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab) {
    if(tab.url.indexOf("facebook.com") != -1) {
        chrome.pageAction.show(tabId);
    }
});

</script>

1 个答案:

答案 0 :(得分:1)

有助于Konrad Dzwinel发表评论,您不能在HTML中使用内联代码。将其移至外部JavaScript,然后重试。

顺便说一下,Page Actions在开发模式下工作,我一直都在使用它们!这是我的Background.js中的一个示例,它检查更新的选项卡上的页面URL;如果URL是我正在寻找的,我会显示页面操作。

/**
* Listener for Displaying the Extension Page Action when the Tab is updated.
* @private
* @event displayPageAction
* @param {Number} tabId The tabId given by the tabs listener to know which tab was updated.
* @param {Object} changeInfo The current status of the tab.
* @param {Object} tab The metadata of the tab.
**/
var displayPageAction = function (tabId, changeInfo, tab) {
var regexAIESEC = new RegExp(/http:\/\/www.myaiesec.net\//); // My page URL
var match = regexAIESEC.exec(tab.url); 
// We only display the Page Action if we are inside a MyAIESEC Page AND it finished loading.
if(match && changeInfo.status == 'complete') {
   chrome.pageAction.show(tab.id);     
}
};

您可以通过onUpdated甚至处理程序选项卡回调此代码。

chrome.tabs.onUpdated.addListener(displayPageAction);