私はhtmlページをカスタムwebViewにロードしようとしています.また、4つのjavascriptファイルをwebViewにロードする必要があります.javascript参照をhtmlのheadタグに直接入れるとうまくいきましたが、実行時にAndroidからロードすると関数、それらは正しくロードされましたが、機能せず、「キャッチされていない参照エラー関数が定義されていません」という例外をキャッチします。
これが私が2つのステータスで行うことです:
ステータス 1: 参照を直接ロード:
これは完全に機能します.....
<html>
<head>
<head>
<script type="text/javascript" src="file:///android_asset/selection/android.selection.js"></script>
<script type="text/javascript" src="file:///android_asset/selection/jquery.js"></script>
<script type="text/javascript" src="file:///android_asset/selection/rangy-core.js"></script>
<script type="text/javascript" src="file:///android_asset/selection/rangy-serializer.js"></script>
</head>
<body>
......
</body>
</html>
ステータス 2: webview client,,, onPageFinished メソッドで Android アプリケーションからロードします。このコードを入力します。
String str = "javascript: (function() { "
+ " var rangycore=document.createElement('script');"
+ " rangycore.type='text/javascript';"
+ " rangycore.src='file:///android_asset/selection/rangy-core.js';"
+"document.getElementsByTagName('head').item(0).appendChild(rangycore);"
+ " var rangyserializer=document.createElement('script');"
+ " rangyserializer.type='text/javascript';"
+ " rangyserializer.src='file:///android_asset/selection/rangy-serializer.js';"
+ " document.getElementsByTagName('head').item(0).appendChild(rangyserializer);"
+ " var select=document.createElement('script');"
+ " select.type='text/javascript';"
+ " select.src='file:///android_asset/selection/android.selection.js';"
+ " document.getElementsByTagName('head').item(0).appendChild(select);"
+ " var jquery=document.createElement('script');"
+ " jquery.type='text/javascript';"
+ " jquery.src='file:///android_asset/selection/jquery.js';"
+ " document.getElementsByTagName('head').item(0).appendChild(jquery);})()";
BTWebView.this.loadUrl(str);
head タグにはスクリプト文字列が正しく追加されていますが、この印刷コンソール メッセージは「uncaught referenceerror: rangy is not defined」です。
どうすればこの問題を解決できますか。ありがとうございます....