3

スクリプトがサファリ拡張機能に挿入されると、ページの読み込み時に実行されます。つまり、拡張機能がインストールされると、挿入された JavaScript は、新しく開いたページまたは後でリロードされるページにのみ適用されます。リロードせずにJavaScriptを確実に実行する方法を知っている人はいますか?

または、ユーザーにロードを強制する...これは少し危険に思えます。

4

1 に答える 1

0

また、インストール時にスクリプトを「実行」または「添付」する方法を見つけようとしました。これは 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);
}
于 2012-07-14T21:57:00.190 に答える