Je construis une extension de safari ... J'ai besoin de quelques paramètres, mais, les messages sont asynchrones, donc, si j'interroge la page globale pour certains paramètres, elle n'est pas là tout de suite .. . Comment puis-je resoudre ceci??Paramètres d'extension Safari
page Global (le message est reçu par le script JS injecté) dans le code sous ici
<!DOCTYPE HTML>
<html>
<script language="javascript">
function messageHandler(event) {
var activeTab = event.target.browserWindow.activeTab
if (event.name === "getSettings") {
activeTab.page.dispatchMessage("returnedSettings", safari.extension.settings[event.message]);
} else if(event.name === 'openNewTab') {
safari.application.activeBrowserWindow.openTab().url = event.message;
activeTab.page.dispatchMessage("focus");
} else if(event.name === 'openNewVenster') {
safari.application.openBrowserWindow().activeTab.url = event.message;
//activeTab.page.dispatchMessage("focus");
}
}
safari.application.addEventListener("message", messageHandler, false);
</script>
</head>
</html>
main.js
var oi = 'tab';
// Message Event Handler
function handleMessage(e) {
if(e.name == 'returnedSettings') {
oi = e.message;
} else if(e.name == 'focus') {
window.focus();
}
}
// Message Event Listener
safari.self.addEventListener('message', handleMessage, false);
safari.self.tab.dispatchMessage('getSettings', 'open');
Je dois var oi
... Mais je ne sais pas comment je peux l'obtenir là-bas, parce que ce sera par défaut si le code est exécuté, à cause des messages asynchrones ...
Merci pour l'édition du code;) Je ne suis toujours pas habitué à la manière dont le code est présenté ici ... – dododedodonl
J'ai changé la façon dont mon script dans le fichier injectected.js fonctionne, il appelle une fonction lorsque le message est reçu. .. – dododedodonl