安装时自动重新加载

时间:2010-07-28 15:38:40

标签: safari safari-extension

当在safari扩展中注入脚本时,它会在页面加载时运行,这意味着当安装扩展时,注入的javascript将仅适用于之后重新加载的新打开的页面或页面。有谁知道如何确保javascript运行而无需重新加载?

或者,强迫用户加载......但这似乎有点危险。

1 个答案:

答案 0 :(得分: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);
}