为什么此Chrome扩展程序会加载两次?

时间:2012-02-21 07:12:54

标签: javascript google-chrome-extension bookmarklet

Bookmarklet应该单独加载弹出窗口(bookmarklet.js),而不是在单击时,扩展程序会在当前选项卡中打开书签并作为弹出窗口。

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)

1 个答案:

答案 0 :(得分:3)

您应该在manifest.json文件中设置弹出式html文件位置。弹出文件可以包含bookmarklet.js的脚本。然后不再需要background.html上的脚本,因为如果浏览器操作有弹出窗口,onClicked将不会触发。单击扩展图标时,弹出窗口将自动显示。或者,您也可以使用setPopup()方法。

所描述的所有内容here