存在しますか?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. "classes.jar"が存在しません - Androidサポートデザイン
- 3. Android SDKマネージャーが存在しません
- 4. ファイルが存在しますが、ファイルが存在しますが、
- 5. stringByEvaluatingJavaScriptFromStringが機能しない
- 6. コンテキストが現在のコンテキストに存在しません(Androidプロジェクト)
- 7. ServiceNotFoundExceptionが存在しますが、IDが存在します
- 8. Symfony FileLoaderLoadExceptionが存在しますが、クラスが存在します
- 9. Androidデータテーブル:存在しますか?
- 10. Android用OpenCV - NativeCameraViewはまだ存在しますか?
- 11. AndroidのSKStoreReviewControllerに相当するクラスが存在しますか?
- 12. MySQLテーブルが存在しませんエラーが存在しますが、存在します
- 13. Android。 Firebase:Keystoreファイルが存在しません:〜/ .android/debug.keystore
- 14. stringByEvaluatingJavaScriptFromStringリファレンスローカルファイル
- 15. UIWebView stringByEvaluatingJavaScriptFromString
- 16. 「System.Web.UI.WebControls」が存在しないデザイナーが存在します。
- 17. テーブルは存在しませんが、存在しています
- 18. インデックスページのルートルートが存在しませんが、ルートが存在します。
- 19. Android - AndroidTestは存在しません
- 20. デバイスが現在のコンテキストに存在しないXamarin Android開発
- 21. Android Studio 2.1.3のANT +の「com.dsi.ant.plugins.antplus.pccが存在しません」エラー
- 22. Androidの警告: "RCTMap"のネイティブコンポーネントが存在しません
- 23. ウィンドウオブジェクトが存在しないがNodeJSにまだ存在する
- 24. androidエラーでデータバインディングを使用する:package *。*。データバインディングが存在しません
- 25. Xamarin Android SDKのadb.exeが存在しません
- 26. AndroidのSQLiteDatabaseカラムが存在しません
- 27. Androidのエラー:org.apache.tools.antパッケージが存在しません
- 28. Android Contenteプロバイダのエラー:「java.lang.IllegalArgumentException:列 'theme'が存在しません」
- 29. Android用のクロスコンパイル時にlibgcc.aにリンクするとエラーが発生しますが、シンボルは存在しますか?
- 30. UIWebView stringByEvaluatingJavaScriptFromString in background
http://stackoverflow.com/questions/10304680/stringbyevaluatingjavascriptfromstring-ios-method-をこれは、アンドロイドに相当するものです – Zeb