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