Latest 0.1
Homepage https://github.com/li6185377/IMYWebLoader
License MIT
Platforms ios 7.0, requires ARC
Dependencies XMLDictionary
Authors

支持对 UIWebView/WKWebView 的资源, 进行 预加载、缓存、拦截 等操作 … Orz

屁话

UIWebView 缓存控制这块本身很弱,几乎无法用系统API 来完成我们的扩展,于是大家找到了 NSURLProtcol 来进行缓存或者拦截的操作, 总体来说还是满足了大家的需求

iOS8 除了WKWebView 之后更是连 NSURLProtocol 都不支持了,还好 WebKit 是开源的,大家通过搜索发现了 通过注册 CustomScheme,来拦截相应scheme的请求,于是大家进行了 http、https 的拦截

但是由于 WebKit 源码的限制,request body 永远都没法互相传递,

通过大量尝试,使用 fishhook,hook c++虚函数,均已失败告终 最终放弃了在 Native 层的拦截

突然有一天…

突然想到 前端的 post body 请求,大都都是通过 XMLHttpRequest 来请求的,为何我不能在 JS 层去 hook 呢? (还在使用 from 表单的,就让它去屎吧)

hook-ajax 可能支持的没那么全,遇到问题可以帮忙改改,然后提个 pull request (一般的AJAX请求 肯定都是没问题的啦)

懒得写 readme … 了

功能

  • 支持对 UIWebView/WKWebView 的数据缓存
  • 支持 WKWebView 带 request body 的 AJAX 请求
  • 支持断网后阅读
  • 支持预加载方法,直接解析 html,提前下载其中的静态资源
  • 支持功能实现替换,没写死,都使用协议编程

参考

Latest podspec

{
    "name": "IMYWebLoader",
    "version": "0.1",
    "description": "Web resources loading by Prefetch/Cache/Hook, Support UIWebView/WKWebView ... Orz",
    "license": "MIT",
    "summary": "u652fu6301u5bf9 UIWebView/WKWebView u7684u8d44u6e90uff0c u8fdbu884c u9884u52a0u8f7du3001u7f13u5b58u3001u62e6u622a u7b49u64cdu4f5c ... Orz",
    "homepage": "https://github.com/li6185377/IMYWebLoader",
    "authors": {
        "ljh": "[email protected]"
    },
    "source": {
        "git": "https://github.com/li6185377/IMYWebLoader.git",
        "tag": "0.1"
    },
    "requires_arc": true,
    "platforms": {
        "ios": "7.0"
    },
    "source_files": [
        "Sources/Private/**/*.{h,m}",
        "Sources/Public/**/*.{h,m}"
    ],
    "resources": "Sources/Resources/**/*.{js}",
    "weak_frameworks": [
        "JavaScriptCore",
        "WebKit"
    ],
    "dependencies": {
        "XMLDictionary": []
    }
}

Pin It on Pinterest

Share This