Chrome扩展程序页面操作未显示在omnibar旁边

时间:2013-11-25 02:54:49

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

清单:

     {
     "manifest_version":2,
     "name":"Optimize url",
     "description":"Optimize url",
     "page_action":{
     "default_icon":{
       "19":"url-icon16.png",
   "38":"url-icon48.png"
 },
 "default_title":"Optimize url"
  },
  "background":{
    "scripts":["background.js"]
  },
  "version":"0.1",
  "permissions":[
  "tabs",
  "https://url.com/*"
  ]
 }

背景JS:

  function checkURL(){
      var host = parseURL(tab.url).host;
    if (host.indexOf("url.com") >= 0) {
     chrome.pageAction.show(tabId);
    }
  }
    chrome.tabs.onUpdated.addListener(checkURL);

然而,当我将它添加到正在开发的Extensions页面时。它不会出现在任何地方。我本来打算将它作为一个浏览器动作,但是它更多地将它用作页面动作,因为它只会集中在一个网站上。

任何人都可以向我解释我的错误吗?

1 个答案:

答案 0 :(得分:2)

您的代码存在以下问题:

  1. tab中使用的变量checkURL无法定义。

  2. 函数parseURL也没有定义(它不是你想象的内置函数)。

  3. 最好过滤onUpdatedstatus: 'complete'事件,因为在单个标签更新期间会触发多个onUpdated事件。

    因此,请使用以下代码替换 background.js 代码:

    var hostRegex = /^[^:]+:\/\/[^\/]*url.com/i;
    function checkURL(tabId, info, tab) {
        if (info.status === "complete") {
            if (hostRegex.test(tab.url)) {
                chrome.pageAction.show(tabId);
            }
        }
    }
    chrome.tabs.onUpdated.addListener(checkURL);