ios webview交互 不响应问题

这段代码写的时机总是不对

当我们在- (void)viewDidLoad中注入JS代码之后,如果页面发生了重定向,此时web页面的JS已经发生了变化,而- (void)viewDidLoad方法只会执行一次,所以不再是之前我们注入过的那些JS了,此时再调用本地方法自然就失效了。

如果我们在- (void)webViewDidFinishLoad:(UIWebView )webView方法中注入JS,看起来貌似可以解决重定向之后调用失效的问题,因为webView每次加载完成后都会回调- (void)webViewDidFinishLoad:(UIWebView )webView,也就是说每次重定向之后,只要页面加载完成,JS代码就会重新被注入。如果JS调用OC方法的时机是在页面加载完成之后,比如点击web界面上的按钮或者由用户手动触发一个事件调用OC代码,这种情况一定是web页面加载完成之后才会发生的,而此时我们已经重新注入了JS,这样一点问题都没有。但是,如果JS调用OC方法的时机刚好发生在页面加载过程中呢?比如web界面加载过程中自动执行一些操作需要调用OC代码,而此时- (void)webViewDidFinishLoad:(UIWebView *)webView还没有回调,所以我们的JS代码并没有重新注入,这里仍然会造成失效的问题

于是我找到了相关的第三方webview的延展UIWebView+TS_JavaScriptContext

但是还是没有解决我的问题 

附上我的需求:

js需要由客户端去请求接口,请求到的数据返回给js h5拿到数据后进行渲染,

现在的问题是 比如一个h5界面需要三个串行数据请求之后才能渲染界面 相当于调用了js方法三次,但是只执行了一次js的方法 后面的都没有调用,请问如何解决!!!!



请注意 ,关于后台重定向了的话,那么我们就无法保证正确注入代码.


UIWebView+TS_JavaScriptContext


是私有API ,企业应用可以试一下.


仅做笔记 ~

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容