2

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()");

私の問題:

  1. logCat ビューに次のエラー メッセージが表示されます: Uncaught SyntaxError: Unexpected identifier at http://XXXX.html:1

かなり多くの Web ページを検索しましたが、ほとんどのページで、JavaScript の「{」と「}」が一致しないことが原因であるとのことでした。しかし、私が確認したところ、上記のように、JavaScript コードが正しい形式であることがわかりました。

  1. ボタンをクリックすると、javascript の実行に失敗しました。エラー メッセージ: E/Web Console(534): Uncaught ReferenceError: displayAlert は null:1 で定義されていません。

私はすでにwebviewでjavascriptを有効にしています:

WebSettings webSettings = wb.getSettings();
webSettings.setJavaScriptEnabled(true);

「 http://XXXX.html 」に実装されている JavaScript 関数を実行できる場所が見つからないのはなぜですか?

よろしくお願いします。どうもありがとう!

4

2 に答える 2

2

あなたの問題は、type属性の書き方にあり、持っているかどうtext/javascriptjavascript/textが非常に重要です(の順序はtype絶対に正しい必要があります)

    <script type="text/javascript">
        function displayAlert()
        {
            alert("this is in function displayAlert()");
        }
    </script>
于 2012-08-23T23:42:52.503 に答える