2015-04-01 3 views
4

Я пытаюсь разрешить пользователю настраивать мое расширение сафари с помощью страницы предпочтений HTML (как это делают многие расширения Safari). Я открываю эту страницу из яваскрипта вызова внутри моего глобального HTML файла:Как я могу получить доступ к настройкам расширения Safari извне глобальной области?

var newTab = safari.application.activeBrowserWindow.openTab(); 
newTab.url = safari.extension.baseURI + "settings/settings.html"; 

что я не могу управлять, чтобы сделать, это написать что-нибудь из этого settings.html в фактические настройки расширения Safari или получить доступ к глобальной странице.

safari.extension.settings.MY_SETTINGS = settingsData; 
safari.extension.globalPage 

Оба этих вызова приводят к исключениям, и объекты отображаются неопределенными.

Я также пытался отправить сообщения, но, похоже, не получил их в глобальном пространстве, где я думал, что смогу снова получить доступ к настройкам.

safari.self.tab.dispatchMessage("store_settings", settingsData); //settings javascript 

Эти сообщения не получены слушателем событий.

safari.self.addEventListener("message", process_messages, false); //GLOBAL javascript 

Любая идея, почему я не могу получить доступ к настройкам расширения? Нужно ли мне инициализировать что-то для моего settings.html, чтобы иметь возможность доступа к настройкам расширения?

PS: Я видел подобный подход работает внутри расширения ClickToPlugin Safari - так это должно быть возможно, но я не могу заставить его работать :(

ответ

1

В глобальном сценарии, попробуйте safari.application.addEventListener

.
1

Если HTML страница является частью вашего расширения, то ваш файл сценария settings.js будет иметь доступ к safari.extension.globalPage. Этот объект указывает на окно вашего global.html.

Оттуда вы можете вызвать любой объект в этом контексте. Отладка этого, однако, является болью, если не сказать больше. Удачи :-)