postmessage双向通信中,是不能使用回调函数的。
window.postmessage({msg:'hello',callback:function(e){ do something with e }})
这样是不行的,js会提示function不会被克隆。
我猜啊因为postmessage是通过dom通讯,js对象会被json化
也就是说不能传递方法。
不过,话说回来,有什么不能的呢,大不了,把function tostring一下,也是可以传过去的。
那这里就要考虑你传callback是干什么用了,如果是作为一种自定义 的数据处理方法,你就tostring一下,过去随便用用就好了,就好像foreach那样,传一个方法,在foreach内部用用。
如果就是想要得到返回值,让自己的书写比较连续。业务逻辑比较连续,callback的结果不会再传到对面。也就是说,callback始终是在本window下运行的。
保持业务逻辑连续的在你所写的方法里,不会因为调用postmessage而