最近項目中有用到OC與JS的交互,剛開始時候覺得只用一個函數就能搞定交互,即 stringByEvaluatingJavaScriptFromString 後邊爲JS代碼轉化的字符串,後來隨着項目的內容的增多,逐漸發現功能有些捉襟見肘,網上搜索了一些方法,解決了問題,先總結如下文,借鑑下經驗,方便記憶的同時,也希望能稍微幫助到一點別人
正常的WebView的代理方法就不再多做贅述,iOS7之前沒有開放webkit,好多東西做起來比較麻煩,現在簡單了好多,一般在返回bool值的代理函數中做判斷該頁面是不是可以加載,加載完成後有時候需要做一些操作,比如我們這次的監聽登錄按鈕,然後調用本地方法,這個時候之前的方法可能就不能滿足需求了。廢話不多說了,說正事
OC調用JS方法
需要先加入javascript的依賴庫 JavaScriptCore.framework ,然後導入頭文件#import <JavaScriptCore/JavaScriptCore.h> 。此時就能做操作了,
首先,創建JSContext的對象,通過webview獲取到jscontext
JSContext *context=[webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"]; //獲取jscontext對象,上下文
NSString *alertStr=@"alert('測試的代碼')"; //準備執行的js代碼
[context evaluateScript:alertStr];//通過oc方法調用js的alert 調用後既執行js的方法
此時會彈出一個類似與iOS種alertview的對話框,若是想調用其他的JS方法,準備好js的代碼,然後利用上下文調用該方法就實現了OC調用JS功能的實現。 如實則完成了IOS中OObjective-C對Javascript方法的調用