编程语言
首页 > 编程语言> > javascript-在Safari扩展程序中传递同步消息

javascript-在Safari扩展程序中传递同步消息

作者:互联网

我正在开发一个safari扩展程序,我想知道是否有一种方法可以在safari扩展程序中传递同步消息.

我想将消息从注入的javascript发送到全局页面,让注入的javascript等待直到返回结果.必须将我的代码拆分为另一个函数来接收来自全局页面的消息,这似乎过于复杂.

解决方法:

您可以使用“特殊” canLoad消息.从技术上讲,它旨在发送一条消息并返回与页面上的元素是否可以加载相关的值,但实际上,这只是同步消息,全局HTML页面以与其他任何方式相同的方式对其进行应答.您只需查找名为“ canLoad”的消息,而不传递自定义消息名称:

// injected script
var myVar = safari.self.tab.canLoad( event );

// global HTML file
<!DOCTYPE html>

<script type="text/javascript" charset="utf-8">
  safari.application.addEventListener( 'message', listen, true );

  function listen( msgEvent ) {
    switch( msgEvent.name ) {
      case 'canLoad':
        msgEvent.message = 'My return value';
        break;
    }
  }
</script>

您可以在开发指南中阅读有关canLoad消息的更多信息.

标签:safari-extension,safari,javascript
来源: https://codeday.me/bug/20191106/1998993.html