wkwebview与UIwebveiw的新认识

http://blog.csdn.net/baihuaxiu123/article/details/51286109
http://methodname.com/jin-jie-pian-iosshi-yong-wkwebviewhun-bian-kai-fa/
http://blog.sina.com.cn/s/blog_c4fb92f60102w65o.html
http://www.bkjia.com/IOSjc/1087722.html 点击图片
https://my.oschina.net/linxiaoxi1993/blog/465905?p={{page}}
http://www.cnblogs.com/shensq/p/5848668.html (js webview)
http://www.cnblogs.com/shaoting/p/5247208.html ios javascriptcore.framework使用
http://www.cnblogs.com/Hakim/p/5885252.html

http://blog.csdn.net/msmwncx/article/details/50381598 URL从新定向
http://www.cocoachina.com/ios/20150626/12161.html

http://mobile.51cto.com/iphone-481490.htm 缓存
http://devonios.com/intercept-302-request.html 拦截
点击返回打印
http://blog.sina.com.cn/s/blog_b8e97683010183lz.html
http://www.360doc.com/content/14/0806/18/11684414_399908679.shtml 进度条
http://blog.csdn.net/y550918116j/article/details/49684127
http://blog.csdn.net/chromium_webkit/article/details/8631867
///
SendDelegateMessage(NSInvocation *): delegate (webView:decidePolicyForNavigationAction:request:frame:decisionListener:) failed to return after waiting 10 seconds. main run loop mode: kCFRunLoopDefaultMode
///

ios webveiw 报错Error Domain=NSURLErrorDomain Code=-999 "(null)" UserInfo={NSErrorFailingURLStringKey=http://192.168.1.85:8088/coolwin_dat/ptpDetail.do?productId=100147, NSErrorFailingURLKey=http://192.168.1.85:8088/coolwin_dat/ptpDetail.do?productId=100
请求以前先停止请求.
http://blog.csdn.net/hursing/article/details/8771847 webview的概论
User-Agent = %E9%85%B7%E7%9B%88%E7%BD%91/4.23 CFNetwork/758.3.15 Darwin/15.6.0 服务端为什么会接受到这种User-Agent
15、在使用webView进行新浪微博分享时,webView会自动保存登陆的cookie导致项目中的分享模块有些问题,删除 webView的cookie的方法:

-(void)deleteCookieForDominPathStr:(NSString *)thePath

{

//删除本地cookie,thePath为cookie路径通过打印cookie可知道其路径

for(NSHTTPCookie *cookie in [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]) {

if([[cookie domain] isEqualToString:thePath]) {

[[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie];

}

}

}

文/学无止境666(简书作者)
原文链接:http://www.jianshu.com/p/3d7e4804033b
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
这个标题已经起了好久,但是好久没有想好咋么动手写.真好前段时间用到了这方面.就从我的角度来讲一下
需求: iOS原声页面加载H5页面,但是,没加载一个页面时要在相应的URL后面拼接一个token 服务器用来区分是wap端请求还是APP段请求.然后返回相应的界面.

当我听到这个需求时,我的内心是窃喜的.我想这岂不是超级简单,然而我没想的是这就是我入坑的第一步.\(o)/~

我的思路: 控制器VC,上面添加一个webveiw,然后[webveiw loadrequest:request];
准代理并且在这个代理方法

- - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
 
    if (![request.URL.absoluteString isEqualToString:@"http://baidu.com"]) {
        NSURL * url = [NSURL URLWithString:@"http://baidu.com?token="];
        NSURLRequest * request = [NSURLRequest requestWithURL:url];
        [webView loadRequest:request];

        return NO;
    }

    return YES;  }

实现URl修改,对就是这样.按照最开始的思路来看,就这么简单搞定啦.但是那因为我们不了解webview的运行机制.

313863A0-3CFB-402F-A8B3-3BB61E28B26A.png

可以看一下,当我们试图加载一个网页时,webveiw的代理执行了几次,2次.
=那么问题来了,URL会对服务器请求几次啊.当然是两次.问题来啦:如果你的领导知道这个他们会怎样,干掉你
那我们再想一下为什么会请求两次呢

断断续续,好久了这片始终没找到好的切入点,感觉webveiw使用很简单,但是深入的资料很难查到,百度一搜,全部都是一样的表面使用.

后来想了好多办法用来防止两次请求,但是都失败.于是就想到了nsurlprotocol,想到了他,于是使用他,但是wkwebveiw,不支持nsurlprotocol,然后呢我又找到了兼容办法,就是调用私有接口(连接在上面),以为万事大吉啦,但是发现,他无法加载post,因为post的请求体无法发送到服务器,于是乎,数据显示不全.我就想,那就把post的请请求不让他执行nsurlprotocol,但是发现不好使.这时候呢,我就想那就用webveiw吧,耗内存,久耗内存吧,然后全部换成webveiw,这时候呢,除去post,以后还有页面请求URL,还有一些其他数据请求URL.我把全部数据打印了一下,发现有用的数据都含有一个.do.于是有用.do筛选一遍.这样呢,就可以在协议里面进行request重定向.对这些URL进行拼接参数.后来又发现问题,就是异步在这种请求下不好使,于是乎,又不能使用拼接参数.
接着能又换了方法,用cookie判断这样,就搞定啦
当然,还有就是这里面需要在nsurlprotocol中对vc进行从操作,使用的是通知中心的模式,而且注意是要在主线程发送通知.
还有就是在surlprotol中跳转原声界面也要在主线程中跳转,尤其是在页面使用了masary布局时,不然会报错.
目前这种靠拦截的做法是比较落后的,个人赶脚,也因为个人平时使用webview比较少,所以遇到很多坑
个人感觉对webveiw的深入理解还是少很多.

当然期间也遇到了很多问题,就是使用kvc修改webveiw的request属性,使用kvo监听request,同样也失败了,不知道是什么原因(求大神解释)

webview goback 刷新 正常情况下他是不支持返回刷新的,通过下面方法可以实现

   id webView = [self.webview valueForKeyPath:@"_internal.browserView._webView"];
        id preferences = [webView valueForKey:@"preferences"];
        [preferences performSelector:@selector(_postCacheModelChangedNotification)];

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容

  • 在此特此声明:一下所有链接均来自互联网,在此记录下我的查阅学习历程,感谢各位原创作者的无私奉献 ! 技术一点一点积...
    远航的移动开发历程阅读 11,076评论 12 197
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,428评论 25 707
  • 每个女生都值得被爱,懂得理解别人的,笑笑也会让人觉得阳光都出来了,真的很暖,也许女人的脸上不是很和谐,但眼...
    少年时Ds阅读 115评论 0 0
  • 谢强,可能我并不在你的心上,所以很多事情你只是说说,而我却当真了…
    颜二货阅读 142评论 0 0
  • 晨练紫荆园 循河二三里,闻笛四五声。 桥迎早行舟,绿覆夏至人。 独踞花木深,静引蝶舞芬。 甫出水云间,鸟起惊初梦。
    黄磊的简书阅读 242评论 0 6