存在しますか?AndroidのようなAndroidのstringByEvaluatingJavaScriptFromStringメソッドは、Iphoneですか? javascriptのような単純なコードではありません:wave()。しかし、複雑なJava Script関数を使用します。あなたが代わりに使用することができますloadUrl
おかげAndroid用のstringByEvaluatingJavaScriptFromStringが存在します。
3
A
答えて
0
、例えば:
webView.loadUrl("javascript:PerformSimpleCalculation()");
それはstringByEvaluatingJavaScriptFromString
【選択のAPIの説明と同様の効果が明確でないです。
0
stringByEvaluatingJavaScriptFromStringは、Android APIのプライベートメソッドです。しかし、それは本当に便利です。
あなたはJavaのリフレクションを経由して、このAPIをretriveできます
Method stringByEvaluatingJavaScriptFromString , sendMessageMethod;;
Object webViewCore , browserFrame;
private boolean hasIntercepted = true;
Object webViewObject = this;
Class webViewClass = WebView.class;
try {
Field mp = webViewClass.getDeclaredField("mProvider");
mp.setAccessible(true);
webViewObject = mp.get(this);
webViewClass = webViewObject.getClass();
Field wc = webViewClass.getDeclaredField("mWebViewCore");
wc.setAccessible(true);
webViewCore = wc.get(webViewObject);
if (webViewCore != null) {
sendMessageMethod = webViewCore.getClass().getDeclaredMethod("sendMessage", Message.class);
sendMessageMethod.setAccessible(true);
Field bf= webViewCore.getClass().getDeclaredField("mBrowserFrame");
bf.setAccessible(true);
browserFrame = bf.get(webViewCore);
stringByEvaluatingJavaScriptFromString = browserFrame.getClass().getDeclaredMethod("stringByEvaluatingJavaScriptFromString", String.class);
stringByEvaluatingJavaScriptFromString.setAccessible(true);
}
hasIntercepted = true;
} catch (Throwable e) {
hasIntercepted = false;
}
その後、この方法を使用する:
Object argument =(Object) ((String)"window.hitTest("+event.getX()+ ","+event.getY()+")");
try {
Object _tagName = stringByEvaluatingJavaScriptFromString.invoke(browserFrame, argument);
String tagName =(String)_tagName;
} catch (Exception e) {
e.printStackTrace();
}
+0
このようにして例外が発生します:フィールドwc = webViewClass.getDeclaredField( "mWebViewCore"); –
関連する問題
- 1. stringByEvaluatingJavaScriptFromStringが
- 2. stringByEvaluatingJavaScriptFromStringが機能しない
- 3. MySQLテーブルが存在しませんエラーが存在しますが、存在します
- 4. 「System.Web.UI.WebControls」が存在しないデザイナーが存在します。
- 5. テーブルは存在しませんが、存在しています
- 6. ウィンドウオブジェクトが存在しないがNodeJSにまだ存在する
- 7. androidエラーでデータバインディングを使用する:package *。*。データバインディングが存在しません
- 8. Xamarin Android SDKのadb.exeが存在しません
- 9. Android用のクロスコンパイル時にlibgcc.aにリンクするとエラーが発生しますが、シンボルは存在しますか?
- 10. stringByEvaluatingJavaScriptFromStringリファレンスローカルファイル
- 11. UIWebView stringByEvaluatingJavaScriptFromString
- 12. Robotiumを使用してフラグメントの存在を確認する - Android
- 13. Linux:ファイルが存在し、存在しません。
- 14. Android Studio .2.2とGradleパッケージが存在しません
- 15. Android Studio Junitテストパッケージorg.junitが存在しません
- 16. IllegalArgumentException:ボタンが存在しません0 android studio 2.1 in ubuntu 14.04
- 17. Android StudioとAndEngine - パッケージが存在しません
- 18. xmlのユーザーデータベースが存在します
- 19. Android lint - 単に「存在しません」を返します
- 20. Java - NoClassDefFoundErrorクラスが存在しますが
- 21. PIDはnetstatに存在しますが、タスクマネージャーには存在しません
- 22. オープンソースのAccess ODBCドライバがlinux用に存在しますか?
- 23. スパークターゲットログファイルがすでに存在します
- 24. stringByEvaluatingJavaScriptFromStringはJavaScriptを起動しません
- 25. 現在の形式のコントロールが存在しますか?
- 26. stringByEvaluatingJavascriptFromString(iOSの方法、Androidの同等は何ですか?)
- 27. UIWebView stringByEvaluatingJavaScriptFromString問題
- 28. UIWebView stringByEvaluatingJavaScriptFromString in background
- 29. JavascriptをstringByEvaluatingJavaScriptFromString
- 30. ORACLE:NO DATA FOUND - データが存在します。
http://stackoverflow.com/questions/10304680/stringbyevaluatingjavascriptfromstring-ios-method-をこれは、アンドロイドに相当するものです – Zeb