사파리 확장 프로그램에 스크립트를 삽입하면 확장 프로그램이 설치되었을 때 새로로드 된 페이지 나 이후에 다시로드되는 페이지에만 적용됩니다. 누구든지 다시로드하지 않고도 자바 스크립트가 실행되도록하는 방법을 알고 있습니까?설치시 자동 새로 고침
또는 사용자에게로드를 강요하는 ... 이것은 다소 위험한 것 같습니다.
사파리 확장 프로그램에 스크립트를 삽입하면 확장 프로그램이 설치되었을 때 새로로드 된 페이지 나 이후에 다시로드되는 페이지에만 적용됩니다. 누구든지 다시로드하지 않고도 자바 스크립트가 실행되도록하는 방법을 알고 있습니까?설치시 자동 새로 고침
또는 사용자에게로드를 강요하는 ... 이것은 다소 위험한 것 같습니다.
나는 설치시 스크립트를 "실행"또는 "부착"하는 방법을 찾으려고 노력했습니다. 이는 페이지를 새로 고침하지 않고도 Chrome 및 Firefox에서 가능합니다. 불행히도 Safari에서 페이지를 다시로드하지 않고도이를 수행 할 수있는 방법을 찾지 못했고 일반적인 addContentScript 핸들러가 스크립트 주입을 처리하게했습니다.
확장자를 설치 한 후 바로 모든 사파리 탭을 다시로드하려면 :/* 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);
}
죄송합니다. 나는 localStorage가 문자열만을 처리하기 때문에 JSON.parse와 JSON.stringify를 도입하여이를 보완해야한다. 답변이 업데이트되었습니다. – Claudijo
나는 질문은 분명하다 모르겠어요. 그것은 분명 나에게 없다. 페이지로드의 시작 또는 끝 부분에 스크립트를 삽입 할 수 있습니다. 각 요청 및 HTML 소스 요소 (예 : iframe)에로드됩니다. –
확장 프로그램이 설치된 후에 페이지를 자동으로 다시로드해야하는 이유는 무엇입니까? – zneak
글쎄, 내가 자동으로 다시로드하고 싶지는 않지만 스크립트가 페이지로드 전후에 삽입되기 때문에 확장 기능이 즉각적인 영향을받지는 않는다. 무슨 뜻인지 알 겠어? – basicallydan