Google Chrome扩展程序未按预期运行

时间:2016-09-20 17:49:55

标签: google-chrome-extension

所以我正在尝试谷歌Chrome扩展,理论上应该非常直接。我知道有大量的堆栈查询,我已经尝试了一些,我甚至复制并粘贴了直接的测试解决方案,但我没有成功。所以这是项目。加载页面时,请检查html内容,然后以编程方式更改图标。

这是我的content.js

chrome.tabs.onUpdated.addListener( function (tabId, changeInfo, tab) {
  if (changeInfo.status == 'complete' && tab.active) {
    var markup = document.documentElement.innerHTML;
    var m = markup.indexOf("candy");
    if (m > -1) {
      chrome.browserAction.setIcon({path: "check.png"});
    } else {
      chrome.browserAction.setIcon({path: "cross.png"});
    }
  }
})

这是我的manifest.json

{
  "manifest_version": 2,

  "name": "Tag Analyzer Plugin",
  "description": "Check if tag exist on page",
  "version": "1.0",

  "browser_action": {
   "default_icon": "cross.png"
  },
  "content_scripts": [
      {
        "matches": [
          "<all_urls>"
        ],
        "js": ["content.js"]
      }
    ],
  "permissions": ["<all_urls>"]
}

现在我将此项目作为内容脚本运行,因为作为内容脚本,我可以使用逻辑

var markup = document.documentElement.innerHTML;
var m = markup.indexOf("candy");
if (m > -1) {} else {}

然而,作为内容脚本,chrome API的东西不起作用。当我将此脚本作为后台脚本运行时,脚本可以正常工作,除了

var markup = document.documentElement.innerHTML;

不返回页面html,它返回注入的脚本html。

我已经阅读了这篇stack,其中提供了有关差异的信息,并且我已经阅读并测试了许多堆栈,例如here,但没有取得多大成功。所以显然我错过了什么,做错了什么。感谢先进的任何帮助。

更新

所以我做了一些修改,但它仍然没有用,虽然我认为它更接近于工作。

根据下面的评论,我现在使用内容脚本和后台脚本。没有错误被抛出,但后台脚本没有任何错误。

content.js

var markup = document.documentElement.innerHTML;
var m = markup.indexOf("candy");
if (m > -1) {
  chrome.runtime.sendMessage({"found" : true});
} else {
  chrome.runtime.sendMessage({"found": false});
}

background.js

chrome.runtime.onMessage.addListener(
  function(request, sender, sendResponse) {
    if request.found {
      alert("HERE");
      chrome.browserAction.setIcon({
          path: "check.png",
          tabId: sender.tab.id
      });
    } else {
      alert("HERE2");
      chrome.browserAction.setIcon({
          path: "cross.png",
          tabId: sender.tab.id
      });
    }
});

的manifest.json

{
  "manifest_version": 2,

  "name": "Tag Analyzer Plugin",
  "description": "find tag on page",
  "version": "1.0",

  "browser_action": {
   "default_icon": "cross.png"
  },
  "background": {
    "scripts": ["background.js"],
    "persistent": false
  },
  "content_scripts": [
      {
        "matches": [
          "<all_urls>"
        ],
        "js": ["content.js"]
      }
    ],
  "permissions": ["<all_urls>"]
}

我在background.js上添加了一些警报,看它是否是触发器,没有任何内容,图标也没有变化。

0 个答案:

没有答案