2012-02-21 81 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

相關問題