0

在查看建议的回复后,我无法解决以下问题:

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

清单.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。

任何帮助将不胜感激,在此先感谢您!

4

1 回答 1

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开始

于 2012-07-05T14:14:35.297 回答