isTrusted=false onMessage postMessage -解决方案

{"isTrusted": "false"} H5嵌套在react native app webview中时,app与HTML之间通信.出现这个原因是在html端使用 JSON.stringify(data),并且两个目标平台不同源。翻译过来就是事件来源不可信.
 

react native端:postMessage

***.postMessage('string');

H5端:onMessage

{"isTrusted": "false"}

window.addEventListener("message",function(event){ 

    JSON.stringify(event);// {"isTrusted": "true"} || {"isTrusted": "false"} 
 })

MDN:
返回一个布尔值,为true表明当前事件是由用户行为触发(比如说真实的鼠标点击触发一个click事件), 为false表明事件由一个脚本生成的(使用事件构造方法,比如event.initEvent)

window.postMessage = function(event){}

var bool = event.isTrusted;

 


解决方法{"isTrusted": "false"}
1.对于event对象不要进行string转化
2.直接取出event.data属性

实验:

翻遍百度都没有解决方式,在这里可以找到答案。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
如果你有多个方法都是接收相同的参数类型,那么可以通过 `@RocketMQMessageListener` 注解中的 `selectorExpression` 属性来区分不同的消息类型。例如: ``` @Component @RocketMQMessageListener(topic = "my-topic", consumerGroup = "demo-consumer-group", selectorExpression = "msgTypeA") public class ConsumerSimpleA implements RocketMQListener<String> { @Override public void onMessage(String msg) { // 处理消息类型为 msgTypeA 的消息 System.out.println("Received message type A: " + msg); } } @Component @RocketMQMessageListener(topic = "my-topic", consumerGroup = "demo-consumer-group", selectorExpression = "msgTypeB") public class ConsumerSimpleB implements RocketMQListener<String> { @Override public void onMessage(String msg) { // 处理消息类型为 msgTypeB 的消息 System.out.println("Received message type B: " + msg); } } ``` 在这个例子中,我们定义了两个消费者,它们都订阅同一个Topic,并且指定了 `selectorExpression` 属性。当生产者发送消息时,通过设置消息的 `tags` 或者 `keys` 来指定消息类型,例如: ``` // 发送消息类型为 msgTypeA 的消息 producer.send(new Message("my-topic", "msgTypeA", "Hello, World!")); // 发送消息类型为 msgTypeB 的消息 producer.send(new Message("my-topic", "msgTypeB", "Hello, RocketMQ!")); ``` 当消费者接收到消息时,会根据 `selectorExpression` 属性值来选择对应的消费者来处理该消息。因此,我们可以通过设置不同的 `selectorExpression` 来区分不同类型的消息,从而实现不同方法处理相同参数类型的需求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值