【发布时间】:2010-08-21 13:56:49
【问题描述】:
我正在构建一个 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 在下面的代码中...但是我不知道如何才能到达那里,因为如果执行代码,它将是默认的,因为异步消息...
【问题讨论】:
-
感谢您编辑代码;)我仍然不习惯这里代码的呈现方式...
-
我改变了我的脚本在injected.js 中的工作方式,它在收到消息时调用一个函数...
标签: jquery message safari-extension