2015-10-24 8 views
14

android AndroidのJavaオブジェクトをJavascriptのコンテキストにインポートするaddJavascriptInterface()というメソッドがあります。 iOSにそれに相当するものはありますか? 私は同様の質問のいくつかを行っている:
androids-addjavascriptinterface-equivalent-in-ios
calling-objective-c-function-from-javascript-in-ios-applications
しかし、私の質問への適切な解決策を見つけることができませんでした。iOS上のUIWebViewにはDOMにインターフェイスを追加するメソッドがありますか?

function initiateAddCall(){ 
     var locus = reader.getPlace().getLocus(); 
     RoomHelper.postReaderLocus(JSON.stringify(locus)); 
} 

RoomHelperは使用していますjavascriptのハンドラです。私はこれを実装する方法はありますか(UIWebView iOSでjavascriptハンドラ/インターフェイスを登録)はUIWebViewiOSにありますか?

+1

あなたは、このための解決策を見つけることを願っています。また、同じインタフェース/ハンドラの問題で悩んでいます。 – Nikilicious

答えて

8

私はちょうどEasyJSWebViewを使用し、かなりうまくいった。 WebViewJavascriptBridgeのような解決策がありますが、EasyJSWebViewは使いやすくなっています。

呼び出すJavaScriptで
RoomHelper *roomHelper = [RoomHelper new]; 
[self.myWebView addJavascriptInterfaces:interface WithName:@"RoomHelper"]; 
[self.myWebView injectJS:webView]; 

RoomHelper.test() 

とRoomHelperにあなたが

RoomHelper.hテストと呼ばれる方法で実装します。

@interface RoomHelper : NSObject 

- (void) test; 

@end 
+1

あなたは私が正確にどのように正確に同じ働きをすることができるかを教えてください:function initiateAddCall(){ var locus = reader.getPlace()。getLocus(); RoomHelper.postReaderLocus(JSON.stringify(locus)); }。私はeasyJSWebViewをチェックしていますが、私はこれを私のプロジェクトで実装できませんでした。 RoomHelperが私のハンドラです。 – TomCoder09

+0

また、EasyJSWebViewを使用しているときに、私のアプリケーションがaddjavascriptinterfaceでクラッシュする: – TomCoder09

+0

クラッシュするとメッセージログは何ですか? –

1

は、ネイティブのためにこれを使用していたが私はグラフを表示するためにD3.JSを使用していたアプリプロジェクト。

NSString *jsString = [NSString stringWithFormat:@"showLegendGraphsFromDevice('%@',%d)",sectionName, position]; 
    [_webView stringByEvaluatingJavaScriptFromString:jsString]; 

JS関数を呼び出すために以下のコードを使用ここで

function showLegendGraphsFromDevice(name, position) 

ここ

キーが必要な引用符で正しいJS文字列を作成しているJS関数です。