전역 변수를 사파리 확장에 어떻게 삽입 할 수 있습니까? 주입 된 스크립트 에서 액세스 할 수 있으며 사파리가 닫힌 후에 다음 출시를 위해 저장할 수 있습니다.
그리고 전역 적으로 정적 인 것을 의미합니다.
그래서 모든 주입 된 스크립트는 그 주입 된 모든 스크립트가 그 자신의 것이 아니라 그 변수의 동일한 버전에 액세스합니다.
이고 도메인 당 localstorage이 아닙니다.사파리 확장의 전역 변수
답변
Safari extension settings API이 사용하는 가장 좋은 일이 될 수 있습니다. 이것은 localStorage와 유사하게 작동하며 safari.extension.settings
을 통해 액세스 할 수 있습니다.
그러나이 주입 스크립트에서 직접 액세스 할 수없는, 그래서 당신은 use messages to pass data from a global page에 있습니다. 당신의 주입 스크립트에서이 같은
뭔가 :
safari.self.addEventListener('message', handleMessage, false);
safari.self.tab.dispatchMessage('getSetting', 'myVar');
function handleMessage(msg) {
if (msg.name === 'returnSetting') {
var setting = msg.message;
}
}
그리고 글로벌 페이지 : 또는
safari.application.addEventListener('message', handleMessage, false);
function handleMessage(msg) {
if (msg.name === 'getSetting') {
var setting = safari.extension.settings(msg.message);
safari.application.activeBrowserWindow.activeTab.page.dispatchMessage('returnSetting', setting);
}
}
, 당신의 도메인 내 로컬 스토리지에 더 많거나 적은 같은 일을 할 수있는 글로벌 페이지이므로 한 도메인의 웹 페이지에만 국한되지 않습니다.
대단히 감사합니다.하지만 사파리를 닫고 다시 열면이 변수가 마지막 값을 유지합니까 ?? –
예. 확장 설정은 세션간에 유지됩니다. 내가 최근에 떨어져 있었다 –
감사 남자, 미안 해요, 난 당신의 솔루션을 사용하고 ([여기]에서 사파리 개발자 문서에 검색 https://developer.apple.com/library/safari/documentation/tools/conceptual/safariextensionguide/MessagesandProxies /MessagesandProxies.html) –
Safari는 페이지 범위 (삽입 된 스크립트)에서 전역 범위의 항목에 액세스하거나 그 반대로는 지원하지 않습니다. 당신은 사용할 필요가 [메시지] (https://developer.apple.com/library/safari/documentation/Tools/Conceptual/SafariExtensionGuide/MessagesandProxies/MessagesandProxies.html#//apple_ref/doc/uid/TP40009977-CH14-SW1) 이 범위들 사이에서 물건을 공유 할 수 있습니다. 그러나 모든 페이지는 글로벌 범위에서 똑같은 사본을 얻을 수 있습니다. 이는 귀하의 요구를 충족시켜야합니다. – canisbos