2012-07-04 56 views
0

审查建议的答复后,我没能解决了以下问题:浏览器扩展程序不访问目标网页DOM

我的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 。

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

+2

开始你不应该使用[内容脚本](http://code.google.com /chrome/extensions/content_scripts.html)? –

回答

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

相关问题