技术CTO-关注编程入门知识,提供编程入门教程

您的位置: 首页 > 移动开发 > ios > 正文

UIWebView怎么拦截到网页里面JS发起的Ajax请求

来源: 技术CTO 阅读:

现在碰到的情况是,普通的请求 如 跳转 都能在 webView里面的委托方法 
.-(BOOL )webView:(UIWebView *)webView 
shouldStartLoadWithRequest:(NSURLRequest *)request 
navigationType:(UIWebViewNavigationType )navigationType 拦截到,问题是现在 的项目 
需求是 要连网页上的JS发起的Ajax请求也能拦截到 就算不用这个 委托方法来拦截,还有没别的方法,求大神们 给一点思路,谢谢

目前iOS与JS通信貌似只有两种方法:用webView的stringByEvaluatingJavaScriptFromString:方法主动获取,或者是shouldStartLoadWithRequest:回调被动接受,似乎没有其他的方式了
引用 2 楼 zhangao0086 的回复:
目前iOS与JS通信貌似只有两种方法:用webView的stringByEvaluatingJavaScriptFromString:方法主动获取,或者是shouldStartLoadWithRequest:回调被动接受,似乎没有其他的方式了

怎么捕捉ajax的请求呢
引用 3 楼 rui90102 的回复:
Quote: 引用 2 楼 zhangao0086 的回复:

目前iOS与JS通信貌似只有两种方法:用webView的stringByEvaluatingJavaScriptFromString:方法主动获取,或者是shouldStartLoadWithRequest:回调被动接受,似乎没有其他的方式了

怎么捕捉ajax的请求呢

由于Ajax没有刷新当前页面,所以shouldStartLoadWithRequest回调不会被执行,这种情况只能通过修改web的代码来解决,思路是改变页面的window.location,你可以参考下这篇:http://stackoverflow.com/questions/5353278/uiwebviewdelegate-not-monitoring-xmlhttprequest
把自己需要的参数放在url里,在Ajax执行的时候去修改window.location
引用 4 楼 zhangao0086 的回复:
Quote: 引用 3 楼 rui90102 的回复:

Quote: 引用 2 楼 zhangao0086 的回复:

目前iOS与JS通信貌似只有两种方法:用webView的stringByEvaluatingJavaScriptFromString:方法主动获取,或者是shouldStartLoadWithRequest:回调被动接受,似乎没有其他的方式了

怎么捕捉ajax的请求呢

由于Ajax没有刷新当前页面,所以shouldStartLoadWithRequest回调不会被执行,这种情况只能通过修改web的代码来解决,思路是改变页面的window.location,你可以参考下这篇:http://stackoverflow.com/questions/5353278/uiwebviewdelegate-not-monitoring-xmlhttprequest
把自己需要的参数放在url里,在Ajax执行的时候去修改window.location

话又说回来,这种方式并不是拦截Ajax请求(无法拦截),只是在Ajax执行的时候通知你

^_^ 如果您热爱技术、热爱编程,想与更多的朋友一起交流学习,欢迎加入本站官方QQ群:345733473 ^_^