WKWebView与js交互

本文针对WKWebView在iOS应用开发中的常见问题提供了实用解决方案,包括如何处理缓存问题、解决JavaScript刷新难题以及有效拦截URL响应。

    接手新的项目,直接就放弃了iOS8以下的用户.想想也是醉了.那么小白带你怎么玩转WKWebView.

首先点进去看API,好到此结束了.那我下面就不用写了.其实网上有很多相关的WEWebView的博客简单的怎么用,我综合一下了大家可以参考岁寒大神的个人博客--WKWebView混合开发框架

爬坑时刻 1 (2016 - 3 - 16)

1.无法设置缓存

在UIWebView,使用NSURLCache缓存,通过setSharedURLCache可以设置成我们自己的缓存,但WKWebView不支持NSURLCache (用了半个小时在设置怎么清除缓存...结果是说多都是泪)

2.webview没激活无法与JS交互

当你用懒加载把几个控制器的html页面都保存下来了.突然你想调用某个页面的js方法,而当前页面不是js所在页面..那么问题来了.什么数据更新不了.或者调用失败.(整整停了三天处理这个问题,js大神都被我坑倒了.只能呵呵.....)解决方法:告诉要调用的页面是否要调用某个js方法,然后在viewWillAppear或者其他要显示当前页面的方法中调用该页面的js

爬坑时刻 2(2016 - 4 - 25)

1.js无法刷新

先解析一下:js 无法刷新是什么回事, 就是在之前你访问过该页面了, 然后你把js 或者 css 更改了提交到服务器, 你从新刷新网页, 没变化, 杀死进程,在点击进app 刷新网页 没变化. 那么处理方法:在URL 后面加个随机数

let ind = url.characters.indexOf("?"//判断url 是否有拼其他字段

        var str: String!

       if ind == nil

        {

            str = "?iosv=\(RandomTime.time())"  //随机数

        }

        else

        {

            str = "&iosv=\(RandomTime.time())" //随机数

        }

        str = url + str


2.WKWebView说没缓存实际直接存储了数据

经过上面的方法处理了js 不刷新的问题, 那么问题又来了,经过十几天的刷刷刷刷....

瞬间爆炸有木有!...看到这种情况你敢不卸载吗! 
查看webKit 文件 发现 每打开一个网页 WKwebView 都会根据当前的url MD5 之后下载两个 文件 (一个后面加多一个body的) 后面加多一个随机数每次打开以前打开过的页面 都下载一个 ,内存当然爆炸啊!
解决方法: 随机数 过一定时间再改变, 存储到一定程度的时候 就删 怎么计算存储 可以参考我的博客 iOS 计算文件夹中包含所有文件的大小

3.拦截Url的方式响应

当网页中带Target 属性_blank(打开新窗口显示页面) 为跳转的时候 调用这个方法

    func webView(webView: WKWebView, createWebViewWithConfiguration configuration: WKWebViewConfiguration, forNavigationAction navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? { }

当网页中带没带跳转属性 为跳转的时候 调用这个方法

 func webView(webView: WKWebView, decidePolicyForNavigationAction navigationAction: WKNavigationAction, decisionHandler: (WKNavigationActionPolicy) -> Void) {

        decisionHandler(.Allow)

    }






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值