2012-02-21 5 views
2

Закладок должен загружать всплывающее окно (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

Вы должны указать расположение всплывающего HTML-файла в файле manifest.json. Всплывающий файл может содержать скрипт от bookmarklet.js. Тогда не нужно больше скрипта на background.html, потому что onClicked не будет срабатывать, если действие браузера имеет всплывающее окно. Всплывающее окно появится при нажатии на значок расширения. Или вы также можете использовать метод setPopup().

Все описано here

Смежные вопросы