当在safari扩展中注入脚本时,它会在页面加载时运行,这意味着当安装扩展时,注入的javascript将仅适用于之后重新加载的新打开的页面或页面。有谁知道如何确保javascript运行而无需重新加载?
或者,强迫用户加载......但这似乎有点危险。
答案 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);
}