Estoy tratando de permitir que el usuario configure mi extensión de safari a través de una página de preferencias HTML (como lo hacen muchas extensiones de Safari). Abro esta página desde una llamada javascript dentro de mi archivo html global:
var newTab = safari.application.activeBrowserWindow.openTab();
newTab.url = safari.extension.baseURI + "settings/settings.html";
Lo que NO puedo hacer es escribir nada de esto settings.html
en la configuración real de la extensión de Safari o accede a la página global.
safari.extension.settings.MY_SETTINGS = settingsData;
safari.extension.globalPage
Ambas llamadas dan lugar a excepciones y los objetos aparecen indefinidos.
Luego, también intenté enviar mensajes, pero parece que nunca los recibí en el espacio global, donde pensé que podría volver a acceder a la configuración.
safari.self.tab.dispatchMessage("store_settings", settingsData); //settings javascript
Estos mensajes no son recibidos por mi oyente de eventos.
safari.self.addEventListener("message", process_messages, false); //GLOBAL javascript
¿Alguna idea de por qué no puedo acceder a la configuración de extensión? ¿Necesito inicializar algo para mi settings.html
¿Para poder acceder a la configuración de extensión?
PD: He visto un enfoque similar trabajando dentro de la extensión ClickToPlugin Safari, por lo que debería ser posible, pero no puedo hacerlo funcionar :(
Respuestas
1 para la respuesta № 1En el script global, intente safari.application.addEventListener
.
1 para la respuesta № 2
Si su página html es parte de su extensión, entonces su archivo de script settings.js tendrá acceso a safari.extension.globalPage. Este objeto apunta a la ventana de su global.html.
Desde allí puedes llamar a cualquier objeto en ese contexto. Depurar esto, sin embargo, es un dolor por decir lo menos. Buena suerte :-)