Автоматическая перезагрузка при установке - PullRequest
3 голосов
/ 28 июля 2010

Когда скрипт внедряется в расширение Safari, он запускается при загрузке страницы, поэтому это означает, что при установке расширения внедренный javascript будет применяться только к вновь открытым страницам или страницам, которые впоследствии перезагружаются.Кто-нибудь знает, как обеспечить запуск javascript без перезагрузки?

В качестве альтернативы, заставляя пользователей загружаться ... хотя это кажется немного опасным.

1 Ответ

0 голосов
/ 15 июля 2012

Я также пытался найти способ «выполнить» или «присоединить» скрипт при установке. Это возможно в Chrome и Firefox без перезагрузки страницы. К сожалению, в Safari я не нашел способа сделать это без перезагрузки страницы и позволить обычным обработчикам addContentScript позаботиться о внедрении скрипта.

Чтобы перезагрузить все вкладки Safari сразу после установки расширения:

/* In glabal.js */

// Reloads all tabs
function reloadTabs() {
  var browserWindows = safari.application.browserWindows;
  for (var i = 0; i < browserWindows.length; i++) {
    var tabs = browserWindows[i].tabs;
    for (var j = 0; j < tabs.length; j++) {
      tabs[j].url = tabs[j].url;
    }
  }
}

// Called on first run
function onInstall() {
  reloadTabs();
}

var firstRun = localStorage['extensionHasPreviouslyRun'] === undefined ||
    !JSON.parse(localStorage['extensionHasPreviouslyRun']);

if (firstRun) {
  onInstall();
  localStorage['extensionHasPreviouslyRun'] = JSON.stringify(true);
}
...