javascript - 未捕获的 ReferenceError,通过 android 应用程序调用 javascript 函数..?

标签 javascript android webview referenceerror

我正在尝试通过 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..)!!

但是我该如何实现呢......?

最佳答案

loadUrl 是异步的。这意味着它会在页面加载之前立即返回。因此,当您尝试调用它时,setGameName 还不存在。

您可以使用 onPageFinished 方法实现 WebClient 并在那里调用您的 javascript 代码。

关于javascript - 未捕获的 ReferenceError,通过 android 应用程序调用 javascript 函数..?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15335139/

相关文章:

java - MySQL查询抛出异常,而不是一个空的ResultSet

java - 拥有多个 WebView 或导入 Java 库

android - 如何制作全屏网页 View

javascript - 为什么我会收到此错误?未捕获的类型错误: state.removeFlag不是函数

javascript - 在删除之前使用 JavaScript 进行提示不起作用

javascript - DOM 中缺少子节点

安卓:外部设备和安卓应用程序之间的USB通信

javascript - 嵌套 : Cannot create a new connection named "default",,因为使用该名称的连接已经存在,并且它现在有一个事件的连接 session

Java 局部变量表示法 : 'textEntered' or 'enteredText' ?

swift - 如何在 webview 中打开重定向页面?