问题形容
Web组件发消息给H5页面时,呈现如下js谬误:
02-14 09:22:56.329 E/jsLog (18834): [H5]Uncaught TypeError: system.onmessage is not a function
问题剖析
当H5页面中定义的 system.onmessage 函数代码逻辑较多,有可能还依赖一些内部js(比方jquery)的援用。此时如果web组件在 onpagefinish 事件处理函数中触发了 this.$element(‘webElementId’).postMessage({message:’xxx’}),则可能会因为H5页面的js没有齐全加载,从而导致呈现 system.onmessage is not a function 的谬误。
处理过程
H5页面中 system.onmessage 函数定义要轻量,只接管快利用页面传递过去的数据即可,剩下的逻辑交给h5页面本人的生命周期函数解决,比方 onload 事件。
须要留神 onload 事件触发时,快利用的数据还没接管到,H5页面中要轮询监听数据,故请参考如下实现代码:
不举荐的实现代码如下:
倡议与总结
了解快利用与H5音讯发送机制,通过轮询的形式解决异步问题。
原文链接:https://developer.huawei.com/consumer/cn/forum/topic/0201411120590030372?fid=18
原作者:Mayism