Почему это расширение Chrome загружается дважды? - PullRequest
2 голосов
/ 21 февраля 2012

Bookmarklet должен загружать только всплывающее окно (bookmarklet.js), вместо этого при нажатии на расширение расширение открывает букмарклет на текущей вкладке И как всплывающее окно.

background.html file:

<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 Ответ

3 голосов
/ 21 февраля 2012

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

Все описанное здесь

...