Как я могу иметь глобальную переменную в расширении Safari, к которой можно получить доступ из введенного скрипта и которую можно сохранить для следующего запуска после закрытия Safari.
и под глобальным я подразумеваю статический.
чтобы все внедренные скрипты обращались к одной и той же версии этой переменной, не каждый внедренный скрипт имеет свою собственную.
а не как localStorage для каждого домена.
Глобальная переменная в расширении сафари
comment
Safari не поддерживает доступ к вещам в глобальной области действия из области действия страницы (внедренные сценарии) и наоборот. Вы должны использовать Сообщения для обмена информацией между этими областями. Но каждая страница может получить копию одной и той же вещи из глобальной области видимости, что должно удовлетворить ваши потребности.
- person chulster   schedule 23.10.2014
Ответы (1)
API настроек расширения Safari может быть лучшее, что можно использовать для этого. Это работает аналогично localStorage и доступно через safari.extension.settings
.
Однако это недоступно напрямую из внедренных скриптов, поэтому вам необходимо использовать сообщения для передачи данных с глобальной страницы.
Что-то вроде этого в вашем внедренном скрипте:
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);
}
}
В качестве альтернативы вы можете сделать более или менее то же самое с localStorage в домене глобальной страницы, чтобы он не ограничивался веб-страницами одного домена.
person
Matt Swain
schedule
23.10.2014
большое спасибо, но когда я закрою сафари и снова открою его, эта переменная сохранит свое последнее значение ??
- person Khairy Abd El-Zaher; 06.11.2014
Да. Настройки расширения сохраняются между сеансами.
- person Matt Swain; 06.11.2014
спасибо, чувак, извини, что меня не было в последнее время, я использовал твое решение и искал его в документах разработчиков Safari в здесь
- person Khairy Abd El-Zaher; 10.11.2014
@MattSwain В настоящее время я пытаюсь получить доступ к localStorage внутри включенного JS-файла глобальной страницы
background.js
. Я проверяю этот файл с помощью построителя расширений, и когда я пытаюсь получить доступ к localStorage в консоли в установленной точке останова, он кажется пустым. Любые идеи о том, как я могу получить доступ к localStorage для всех сайтов?
- person Andre; 31.03.2016