5

android Webview Activityを介してjavascript関数setGameName()を呼び出そうとしていますが、がスローされuncaught ReferenceError:setGameName not defined at :1ます。

私のソースコードは次のとおりです。

webView2.setWebChromeClient(new WebChromeClient());
webView2.getSettings().setLightTouchEnabled(true);
webView2.getSettings().setJavaScriptEnabled(true);
webView2.addJavascriptInterface(jsInterface, "AndroidFunction");
webView2.loadUrl("file:///android_asset/www/index.html");
webView2.loadUrl("javascript:setGameName()");

HTMLコード:

    <body>

        <script type="text/javascript">
            function init() {
                console.log("====== I am getting called::===");
                var testVal = document.getElementById('playertextId').value;
                AndroidFunction.proceedFurther(testVal);
            };

            function setGameName() {
                console.log("====== Got the value===");
                document.getElementById('gametextId').value;
            };
        </script>
</body>

index.htmlを正常にロードしていますが、関数呼び出しで例外をスローしています。適切な解決策を提供してください。

アップデート:

i have found the problem the page is not getting loaded at the time of function call..(Since on giving a time delay of 5000ms it is getting called..)!!

しかし、どうすればそれを実装できますか..?

4

2 に答える 2

5

loadUrl は非同期です。つまり、ページが読み込まれる直前に戻ります。そのため、setGameName を呼び出そうとすると、まだ存在しません。

onPageFinished メソッドを使用して WebClient を実装し、そこで JavaScript コードを呼び出すことができます。

于 2013-03-11T10:04:00.257 に答える
0

よくわかりませんが、おそらく file:///android_asset/www/index.html をWebサーバーに配置してから取得する必要があります。デフォルトでは、ブラウザーは、ファイルシステムに由来する JS から JS をロードできません。

于 2013-03-11T09:39:44.757 に答える