【问题标题】:Safari extension settingsSafari 扩展设置
【发布时间】: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


【解决方案1】:

你没有说太多你想要做什么,但你是对的,消息是异步的。如果您正在做的事情不能直接在全局页面中完成,您可以使用专门的canLoad 消息。这是一种 hack,当然,除非您实际上是在检查是否可以加载某些内容,但我已经使用了几次,效果相当好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多