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

解决方案 »

  1.   

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

  2.   

    怎么捕捉ajax的请求呢
    由于Ajax没有刷新当前页面,所以shouldStartLoadWithRequest回调不会被执行,这种情况只能通过修改web的代码来解决,思路是改变页面的window.location,你可以参考下这篇:http://stackoverflow.com/questions/5353278/uiwebviewdelegate-not-monitoring-xmlhttprequest
    把自己需要的参数放在url里,在Ajax执行的时候去修改window.location
    话又说回来,这种方式并不是拦截Ajax请求(无法拦截),只是在Ajax执行的时候通知你
      

  3.   

    1、WebView 在没发出一个请求前,会调用如下方法,
    可以尝试在这里处理。
    -[NSURLCache cachedResponseForRequest:]2、再就是看看能否使用 NSURLProtocol 拦截。没其他方法了。
      

  4.   


    iOS 8 下,方法2会失效。