WKWebView与js交互
2016-03-15 18:52
573 查看
接手新的项目,直接就放弃了iOS8以下的用户.想想也是醉了.那么小白带你怎么玩转WKWebView.
首先点进去看API,好到此结束了.那我下面就不用写了.其实网上有很多相关的WEWebView的博客简单的怎么用,我综合一下了大家可以参考岁寒大神的个人博客--WKWebView混合开发框架
你从新刷新网页, 没变化, 杀死进程,在点击进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
瞬间爆炸有木有!...看到这种情况你敢不卸载吗!
查看webKit 文件 发现 每打开一个网页 WKwebView 都会根据当前的url MD5 之后下载两个 文件 (一个后面加多一个body的)
后面加多一个随机数每次打开以前打开过的页面 都下载一个 ,内存当然爆炸啊!
解决方法: 随机数 过一定时间再改变, 存储到一定程度的时候 就删 怎么计算存储 可以参考我的博客 iOS 计算文件夹中包含所有文件的大小
属性_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)
}
首先点进去看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)
}
相关文章推荐
- ios8 UITableView设置 setSeparatorInset UIEdgeInsetsZero不起作用的解决办法(去掉15px空白间距)
- IOS 8 基本定位实现
- iOS8中使用CoreLocation定位
- ios8 widget
- ios8高德地图定位实效解决方法
- iOS8指纹验证TouchID
- Xcode6.1中 模拟器中文输入法
- 代码创建按钮
- IOS8无法启用定位的服务:CLLocationManager
- Xcode6 模拟器路径【修改】
- iOS8 UISearchViewController搜索功能讲解
- Xcode6 上面关于ios8系统通讯录调用的代理方法变更;
- XCode6中debug app的视图结构
- 详解UICoordinateSpace和UIScreen在iOS 8上的坐标问题
- iOS8 UITabBar图标变蓝色
- 关于ios 推送问题解决
- Attribute Unavailable: First baseline layout attribute on iOS versions prior to 8.0
- Xcode6使用iOS8的sizeClasses解决屏幕适配问题
- setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key解决办法
- iOS内存管理与ARC,及Property介绍