Настройки расширения Safari - PullRequest
1 голос
/ 21 августа 2010

Я создаю расширение для сафари ... Мне нужно получить некоторые настройки, но сообщения асинхронны, поэтому, если я запрашиваю глобальную страницу для некоторых настроек, ее там нет сразу ... Как можноЯ решаю это ??

Глобальная страница (сообщение получено с помощью внедренного сценария 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в коде здесь ... Но я не знаю, как я могу получить его там, потому что это будет по умолчанию, если код выполняется из-за асинхронных сообщений ...

1 Ответ

0 голосов
/ 22 августа 2010

Вы мало говорите о том, что пытаетесь сделать, но вы правы в том, что сообщения асинхронны.Если то, что вы делаете, не может быть выполнено непосредственно на глобальной странице, вы можете использовать специальное сообщение canLoad.Это своего рода хак, если, конечно, вы на самом деле не проверяете, может ли что-то загружаться, но я использовал это несколько раз довольно эффективно.

...