首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Safari中的options页onMessage未收到sendMessage

在Safari浏览器中,options页是指浏览器的设置页面,用户可以在该页面中进行各种个性化设置。onMessage和sendMessage是指在浏览器扩展程序中进行消息传递的两个方法。

onMessage是一个事件监听器,用于接收来自其他页面或扩展程序发送的消息。当接收到消息时,可以执行相应的操作。然而,在Safari中,options页无法直接接收来自其他页面或扩展程序的消息,因此无法使用onMessage方法来接收消息。

sendMessage是用于向其他页面或扩展程序发送消息的方法。通过sendMessage方法,可以将消息发送给指定的页面或扩展程序,并在接收方执行相应的操作。

解决这个问题的一种方法是,在options页中使用safari.extension.globalPage对象来发送消息,然后在全局页面(即background页)中使用onMessage方法来接收消息。具体步骤如下:

  1. 在options页中,使用以下代码发送消息:
代码语言:txt
复制
safari.extension.globalPage.contentWindow.postMessage(message, targetOrigin);

其中,message是要发送的消息内容,targetOrigin是目标页面的URL。

  1. 在全局页面(background页)中,使用以下代码监听消息:
代码语言:txt
复制
safari.application.addEventListener("message", handleMessage, false);

function handleMessage(event) {
  // 处理接收到的消息
}

通过以上方法,可以在options页中向其他页面或扩展程序发送消息,并在全局页面中接收并处理这些消息。

需要注意的是,Safari浏览器的扩展开发相对于其他浏览器来说较为独特,因此在开发过程中可能会遇到一些限制和特殊情况。在处理消息传递时,建议参考Safari官方文档和开发者论坛,以获取更详细的信息和解决方案。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Spring整合WebSocket

    WebSocket,干什么用的?我们有了HTTP,为什么还要用WebSocket?很多同学都会有这样的疑问。我们先来看一个场景,大家的手机里都有微信,在微信中,只要有新的消息,这个联系人的前面就会有一个红点,这个需求要怎么实现呢?大家思考3秒钟。哈哈,最简单,最笨的方法就行客户端轮询,在微信的客户端每隔一段时间(比如:1s或者2s),向服务端发送一个请求,查询是否有新的消息,如果有消息就显示红点。这种方法是不是太笨了呢?每次都要客户端去发起请求,难道就不能从服务端发起请求吗?这样客户端不就省事了吗。再看看股票软件,每个股票的当前价格都是实时的,这我们怎么做,每个一秒请求后台查询当前股票的价格吗?这样效率也太低了吧,而且时效性也很低。这就需要我们今天的主角WebSocket去实现了。

    02

    Spring整合WebSocket

    WebSocket,干什么用的?我们有了HTTP,为什么还要用WebSocket?很多同学都会有这样的疑问。我们先来看一个场景,大家的手机里都有微信,在微信中,只要有新的消息,这个联系人的前面就会有一个红点,这个需求要怎么实现呢?大家思考3秒钟。哈哈,最简单,最笨的方法就行客户端轮询,在微信的客户端每隔一段时间(比如:1s或者2s),向服务端发送一个请求,查询是否有新的消息,如果有消息就显示红点。这种方法是不是太笨了呢?每次都要客户端去发起请求,难道就不能从服务端发起请求吗?这样客户端不就省事了吗。再看看股票软件,每个股票的当前价格都是实时的,这我们怎么做,每个一秒请求后台查询当前股票的价格吗?这样效率也太低了吧,而且时效性也很低。这就需要我们今天的主角WebSocket去实现了。

    02
    领券