3

当脚本被注入到 safari 扩展中时,它会在页面加载时运行,这意味着当安装扩展时,注入的 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 回答