Chrome扩展程序无法访问目标页面DOM

时间:2012-07-04 03:23:16

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

在审核了建议的回复后,我无法解决以下问题:

我的javascript没有访问页面DOM,但它正在运行。

的manifest.json

{
  "name": "Clicky",
  "version": "1.0",
  "background": { "scripts": ["jquery.js", "clickclickboom.js"] },
  "permissions": [
    "tabs", "http://*/*"
  ],
  "browser_action": {
  "name": "Find all links",
  "icons": ["icon.jpg"]
  },
  "manifest_version": 2
}

clickclickboom.js

alert("script runs");
function clicky() {
    alert ("clicky got called");
    jQuery(".testClass").find("a");
}
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(
    null, {code: clicky()});
});

两个警报都会弹出,但是当我调试时,我看到扩展程序访问了background.html DOM而不是目标页面的DOM。

非常感谢任何帮助,谢谢你!

1 个答案:

答案 0 :(得分:0)

chrome.tabs.executeScript()中,code属性必须是包含代码的字符串。

目前您的代码发生了什么:执行clicky(),返回undefined,这基本上使您的executeScript成为无操作调用...

您可以做的一件事是使用clicky.toString(),但我个人不推荐!在这种情况下,alert ("clicky got called")可能有效(如果幸运的话)。下一行将无法工作,因为内容脚本中未定义jQuery。您包含的jquery仅限于背景页面。

从你的代码中,你似乎并不熟悉chrome扩展的架构,所以我建议你从http://code.google.com/chrome/extensions/getstarted.html开始