在审核了建议的回复后,我无法解决以下问题:
我的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。
非常感谢任何帮助,谢谢你!
答案 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开始