iOS与javascript交互总结

33 篇文章 0 订阅
24 篇文章 0 订阅

  苹果在 iOS2 推出了UIWebView,随着不断发展,原生代码 + WebView 混合显示已发展成最流行的移动应用开发模式。

其中,native <<---->> WebView页面的javascript脚本 间的通讯,是混合开发模式的核心内容。


简单回顾一下各个时期原生代码与javascript通讯的方法:


iOS6及之前:使用第三方框架:WebViewJavascriptBridge
基于UIWebView,速度和内存性能一般。本质上,它也是通过webview的代理拦截scheme,然后注入相应的JS

关键代码:

1、ios调用oc 用stringByEvaluatingJavaScriptFromString 

2、JS调用oc,是基于url进行拦截




iOS7:苹果提供了JavaScriptCore.framework框架。

基于UIWebView,速度和内存性能一般。相比WebviewJavascriptBridge,提供了更简单方便的js接入方式

关键代码:self.context = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];

注意坑:

1、oc调用js,必须是html加载完成之后才可以。-(void)webViewDidFinishLoad:(UIWebView *)webView;




iOS8:苹果推出了新框架 WebKit,提供了替换 UIWebView 的组件 WKWebView(推荐)
解决UIWebView 的性能问题没有了,速度更快了,占用内存少了,体验更好了,下面列举一些其它的优势:
1、在性能、稳定性、功能方面有很大提升(无论 WKWebView 跳转多少 Web 页面都没有内存泄漏了,加载耗时差别不大,WKWebView 的 内存优化减少了几乎4倍

2、更多的支持 HTML5 的特性(对HTML5性能也提升了4倍)

3、官方宣称的高达60fps(帧每秒)的滚动刷新率以及内置手势

4、Safari 相同的 JavaScript 引擎(Nitro JS)

5、将 UIWebViewDelegate 与 UIWebView 拆分成了14类与3个协议,包含该更细节功能的实现。

注意坑:

1、在 WKWebsiteDataStore 出现之前(iOS 9 中),WKWebViewiOS 8可以通过清理 Library 目录下的 Cookies 目录来清除缓存。


关键代码:

1、javascript调用本地代码:


        

        


2、本地代码调用javascript

















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值