近期和同事的項目中使用到了UIWebview的JSContext相關的特性javascript
因爲開始從ios7適配,能夠用javascriptcore.framework,和h5的通訊也相對之前簡單了不少,不須要定義那麼多的url shcemajava
具體javascript和native經過javascriptcore互相調用的例子能夠看這個ios
http://justsee.iteye.com/blog/2036713git
這裏遇到一個tricky問題github
JSContext這個對象會常常變化,在WebView開始load到finish load會變化,在finishload以後在頁面內href連接到另外一個頁面也會變化web
及時的獲取到當前的jscontext對象很是關鍵api
JSContext *ctx = [webView valueForKeyPath:@」documentView.webView.mainFrame.javaScriptContext」];
上面這種方式獲取的時候,不能在context變化後及時知道
app
mac底下有個api,每次create新的contenxt就會有回調出來工具
具體能夠看這個開源工具:https://github.com/TomSwift/UIWebView-TS_JavaScriptContext這個開源工具裏面有私有api調用,若是要是上傳appstore要注意刪除其中的幾行代碼@implementation NSObject (magic) - (void) webView: (id) unused didCreateJavaScriptContext: (JSContext*) ctx forFrame: (id) frame { // ... } @end