AndroidでWebViewを使用しています。以下のURLをロードするためにloadDataWithBaseURLを使用しています:
(ここでは、セキュリティ上の理由から、実際の Web ページの URL を "XXXX" に置き換えています)
wb.loadDataWithBaseURL(" http://XXXX.html ", フォーマット済みHTML, "text/html", "UTF-8", null);
FormattedHTML のコンテンツには、サービス クラスによって取り込まれた実際の HTML ソース コードが含まれています。
http://XXXX.htmlの完全なソース コードは次のとおりです。
<html>
<head>
<script language="javascript">
function displayAlert()
{
alert("this is in function displayAlert()");
}
</script>
</head>
<body onload="displayAlert();">dummy
</body>
</html>
そして私はボタンを持っています。クリックすると、javascript 関数「displayAlert」が実行されます: wb.loadUrl("javascript:displayAlert()");
私の問題:
- logCat ビューに次のエラー メッセージが表示されます: Uncaught SyntaxError: Unexpected identifier at http://XXXX.html:1。
かなり多くの Web ページを検索しましたが、ほとんどのページで、JavaScript の「{」と「}」が一致しないことが原因であるとのことでした。しかし、私が確認したところ、上記のように、JavaScript コードが正しい形式であることがわかりました。
- ボタンをクリックすると、javascript の実行に失敗しました。エラー メッセージ: E/Web Console(534): Uncaught ReferenceError: displayAlert は null:1 で定義されていません。
私はすでにwebviewでjavascriptを有効にしています:
WebSettings webSettings = wb.getSettings();
webSettings.setJavaScriptEnabled(true);
「 http://XXXX.html 」に実装されている JavaScript 関数を実行できる場所が見つからないのはなぜですか?
よろしくお願いします。どうもありがとう!