UIWebView JSContext相关问题

近期和同事的项目中使用到了UIWebview的JSContext相关的特性

由于开始从ios7适配,可以用javascriptcore.framework,和h5的通信也相对以前简单了很多,不需要定义那么多的url shcema

具体javascript和native通过javascriptcore互相调用的例子可以看这个

http://justsee.iteye.com/blog/2036713

这里遇到一个tricky问题

JSContext这个对象会经常变化,在WebView开始load到finish load会变化,在finishload之后在页面内href链接到另一个页面也会变化

及时的获取到当前的jscontext对象非常关键

JSContext *ctx = [webView valueForKeyPath:@”documentView.webView.mainFrame.javaScriptContext”];

 上面这种方式获取的时候,不能在context变化后及时知道

mac底下有个api,每次create新的contenxt就会有回调出来

@implementation NSObject (magic)
- (void) webView: (id) unused didCreateJavaScriptContext: (JSContext*) ctx forFrame: (id) frame
{
    // ...
}
@end
具体可以看这个开源工具:
https://github.com/TomSwift/UIWebView-TS_JavaScriptContext
这个开源工具里面有私有api调用,如果要是上传appstore要注意删除其中的几行代码


原文地址:https://www.cnblogs.com/wxm5558/p/5477828.html