Chrome扩展程序:如何让我的内容脚本扩展程序显示在选定的网站上

时间:2013-09-18 23:08:25

标签: javascript google-chrome-extension

我希望我的Chrome扩展程序能够在google和amazon上显示。我的manifest.json看起来像这样:

{
 "background": {"scripts": ["background.js"]},
 "content_scripts": [
    {
      "matches": ["*://*.google.com/*", "http://www.amazon.com/*", "*://*.amazon.com/*"],
      "js": ["background.js"]
    }
  ],
 "name": "Denver Public Library Lookup",
 "description": "Does Stuff",
 "homepage_url": "http://www.artifacting.com",
 "icons": {
     "16": "icon-16.png",
     "48": "icon-48.png",
     "128": "icon-128.png" },
 "permissions": [
     "tabs",
     "http://*/*",
     "https://*/*"
 ],
 "version": "1.0",
 "manifest_version": 2
}

但它不会出现在谷歌或亚马逊上,我无法弄清楚原因。

这是我的background.js

chrome.browserAction.onClicked.addListener(function(tab) {
    chrome.tabs.executeScript(tab.id, {file: "bookmarklet.js"})
});

这是bookmarlet.js

setTimeout('x99.focus()', 300);
var re = /([\/-]|at[at]n=)/i;
if (re.test(location.href) == true) {
    var isbn = RegExp.$2;
    var x99 = window.open('http://searchsite/search/searchresults.aspx?ctx=1.1033.0.0.6&type=Keyword&term=' + atatn, 'Library', 'scrollbars=1,resizable=1,top=0,left=0,location=1,width=800,height=600');
    x99.focus();
}

有什么想法吗?谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

代码中有很多错误。

  • 此处不需要内容脚本,可以执行所有操作 在背景页面内容
  • 很难制作背景页面 代码在内容脚本中工作,这绝对不是你的情况。 因此使用相同的background.js作为后台和内容脚本 在你的情况下至少不适用
  • Manifest不会声明浏览器 行动。
  • 等等

我强烈建议从Google extension documentation开始。你会节省很多时间。

我认为文件看起来像

的manifest.json

{
 "background": {"scripts": ["background.js"]},
 "name": "Denver Public Library Lookup",
 "description": "Does Stuff",
 "homepage_url": "http://www.artifacting.com",
 "icons": {
     "16": "icon-16.png",
     "48": "icon-48.png",
     "128": "icon-128.png" },
  "browser_action": {
    "default_icon": {
      "19": "images/icon-19.png",
      "38": "images/icon-38.png"
    },
    "default_title": "Do Staff"      // optional; shown in tooltip
  },
 "permissions": [
     "tabs",
     "http://*/*",
     "https://*/*"
 ],
 "version": "1.0",
 "manifest_version": 2
}

background.js

chrome.browserAction.onClicked.addListener(function(tab) {
  // You need more sothisticated regexp here which checks for amazon and google domains
  var re = /([\/-]|at[at]n=)/i;
  if (re.test(tab.url)) {
    var isbn = RegExp.$2;
    var url = "http://searchsite/search/searchresults.aspx?ctx=1.1033.0.0.6&type=Keyword&term=" + isbn;
    chrome.windows.create({
      url : url, 
      left: 0,
      top: 0,
      width: 800,
      height: 600,
      focused: true,
      type: "popup"
    });
  }
});

不需要bookmarlet.js