1
我正在構建一個safari擴展...我需要獲取一些設置,但是,消息是異步的,所以,如果我查詢全局頁面的某些設置,它不會馬上出現。 。我該如何解決這個問題?Safari擴展設置
全球頁面(該消息被注入的JS腳本接收)
<!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');
我需要在這裏下的代碼var oi
...但我不知道我怎麼能在那裏得到它,因爲它會默認,如果代碼被執行,因爲異步消息...
感謝編輯代碼;)我仍然不習慣如何在這裏呈現代碼...... – dododedodonl 2010-08-21 13:58:35
我改變了我的腳本在inject.js中的工作方式,它在收到消息時調用函數。 .. – dododedodonl 2010-08-21 22:39:26