我试图通过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..)!!
但是我如何实施呢?
答案 0 :(得分:5)
loadUrl是异步的。这意味着它会在页面加载之前立即返回。因此,当您尝试调用它时,setGameName尚不存在。
您可以使用onPageFinished方法实现WebClient并在那里调用您的javascript代码。
答案 1 :(得分:0)
我不太确定,但您可能需要将file:///android_asset/www/index.html放在网络服务器上然后检索它。默认情况下,浏览器不允许JS从源自Filesystems的JS加载。