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 放在网络服务器上,然后检索它。默认情况下,浏览器不允许 JS 从来自文件系统的 JS 加载。

于 2013-03-11T09:39:44.757 回答