2012-05-29 51 views
0

制作一个简单的插件,这时候页面加载执行JavaScript的,我想不同的网页铬扩展:JavaScript的不执行

上执行不同的JavaScript,但下面的代码没有按预期工作,没有任何“警惕”被触发:

background.html

<html><body> 
<script> 
chrome.webRequest.onCompleted.addListener(
    function(details) { 
    alert (details.url); 
    }, 
    { 
     urls: ["*"], 
     types: ["main_frame"] 
    }, 
    [] 
); 
</script> 
</body></html> 

manifest.json

{ 
    "name": "JS", 
    "background_page": "background.html", 
    "permissions": [ 
    "webRequest", 
    "*" 
    ], 
    "version":"0.10" 
} 

回答

1

从扩展的背景页面制作的警报和console.log只是在常规页面上不可见。

如果你想看到它们,你必须打开后台页面:进​​入扩展设置页面(菜单工具/扩展名),并点击扩展名称下方的“background.html”链接。

在你的情况下,在开发阶段,只需在内容脚本(即不是背景页面)中添加console.log和警报即可。所以你可以在不打开背景页面的情况下阅读它们。

编辑:根据要求,一个扩展,只会提醒位置:

main.js:

alert(document.location.href); 

manifest.json的:

{ 
    "name": "Any name", 
    "version": "3.3", 
    "background_page": "background.html", 
    "content_scripts": [ 
     { 
      "matches": ["http://*/*"], 
      "all_frames" : true, 
      "run_at" : "document_end", 
      "js": [ 
       "main.js" 
      ] 
     } 
    ] 
} 

是我测试了它。是的,它听起来很痛苦。在开发期间,您应该使用console.log而不是alert

+0

对不起,我想要在每个页面上执行代码,并且代码应该放在background.html中,我错了吗? – daisy

+0

我不确定你想要什么,所以也许我的评论不会有用,但如果你只是想在每个页面上执行一个脚本,你可以简单地将它添加到内容脚本中,然后可以做一些不同的取决于位置,如[this main.js](https://github.com/Canop/braldop/blob/master/chrome/braldop/ext_main.js)所示。 –

+0

好吧,所以认为这是一个网站的自动登录脚本,这是更接近..你能提供一个最小的例子吗? – daisy