2012-02-21 89 views
2

Bookmarklet应该单独加载一个弹出式窗口(bookmarklet.js),而当点击时,扩展会在当前选项卡中打开书签并以弹出形式显示。为什么这个Chrome扩展会加载两次?

background.html文件:

<script> 
chrome.browserAction.onClicked.addListener(function(tab) { 
    chrome.tabs.executeScript(tab.id, {file: "bookmarklet.js"}) 
}); 
</script> 

bookmarklet.js文件:

var d=document,w=window,e=w.getSelection,k=d.getSelection,x=d.selection,s=(e?e():(k)?  k():(x? x.createRange().text:0)),f='http://www.quora.com/board/bookmarklet',l=d.location,e=encodeURIComponent,p='?v=1&url='+e(l.href),u=f+p;try{if(!/^(.*\.)?quora[^.]*$/.test(l.host))throw(0);}catch(z){a =function(){if(!w.open(u,'_blank','toolbar=0,scrollbars=no,resizable=1,status=1,width=430,height=400'))l.href=u;};if(/Firefox/.test(navigator.userAgent))setTimeout(a,0);else a();}void(0o) 

回答

3

应设置在manifest.json文件的弹出HTML文件的位置。弹出文件可以包含bookmarklet.js的脚本。那么不需要background.html上的更多脚本,因为如果浏览器操作弹出窗口,onClicked将不会触发。当单击扩展名图标时,弹出窗口将自动出现。或者,您也可以使用setPopup()方法。

一切描述here

相关问题