H5页面跳转原生页面,原生页面使用通知Notifacation通知H5页面某个动作完成,然后pop回H5页面,在H5页面的通知方法中调用js代码,js function调用出错。因为当时前端开发反馈OC调用js,js代码已经执行,所以想这个问题花了一些时间,具体错误如下:
调用WKWebview的evaluateJavaScript的时候老是报错:Error Domain=WKErrorDomain Code=4 "发生JavaScript异常" UserInfo={WKJavaScriptExceptionLineNumber=1, WKJavaScriptExceptionMessage=ReferenceError: Can't find variable: onLoginSuccess, WKJavaScriptExceptionColumnNumber=15, WKJavaScriptExceptionSourceURL=*****NSLocalizedDescription=发生JavaScript异常}
},
这里面的问题原因是:evaluateJavaScript去调用h5中的方法之后,这个function要执行完成之后才会回调的app这边,如果这个function中报错了,回调到app这边就会一直报错。所以建议function中的东西可以先延迟执行。
-(void)noticeMethod
{
Dispatch_after(dispatch_time(DISPATCH_NOW,(int64_t)(0.5*NSEC_PER_SEC)),dispatch_get_main_queue(),^{
oc call js
});
}
通知发送接收执行的速度比页面之间的速度更快,导致页面还停留在原生页面,h5方法调用已经执行,造成报错,无法执行,通过延时处理可以解决这个问题。