javascript - 在 WebView 中调用 JavaScript 函数

标签 javascript android function android-webview

我知道这个问题已经被问过很多次了,我已经检查了所有的解决方案并研究了一切。但是,这根本不适合我。

我不知道我做错了什么。有人可以帮帮我吗?

我正在我的 WebView 中加载本地 html 文件,然后调用 JavaScript 函数:

wv.loadUrl("file:///android_asset/sample.html");
wv.getSettings().setJavaScriptEnabled(true);
JavascriptInterface javasriptInterface = new JavascriptInterface(MyActivity.this);
wv.addJavascriptInterface(javasriptInterface, "MyInterface");
wv.loadUrl("javascript:loadpath()");

HTML 文件是:

<html>
<head>
</head>

<body>
<script type="text/javascript">
    function callDoSomething() {
        // Do something
    }

    function loadpath() {
        // Is not called no matter whatever operation I do here. Just printing a string, setting variable, android callback anything.
        document.write("Hi");
        document.getElementById('img').src = "path.png";
    }
</script>

<form name="myForm" action="FORM">
    <img src=""  alt="Autofill" /><br>
    <input type="button" value="Submit" onClick="callDoSomething()" />
</form>

</body>
</html>

最佳答案

loadUrl() 是异步的。您调用第二个 loadUrl() way 太早了。您需要等待页面加载完成,也许可以使用 WebViewClient 并观察 onPageFinished()

关于javascript - 在 WebView 中调用 JavaScript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15281484/

相关文章:

javascript - var a = b.c = function(){} 语法的目的

javascript - JQuery 窗口滚动顶部和底部

javascript - 实时数据表记录,显示带有类的数据,并且数据绑定(bind)涉及表行或 td

javascript - 是否可以使用 API 直接从公共(public) Twitter 列表中检索状态?

Android:getSupportActionBar() 在 ActionBarSherlock 库中总是返回 null

android - 使用 Json、Gson、InputStream 和 HttpPost 将文件插入 Mysql

javascript - 如何从字符串 Vue.js 中删除 HTML 标签

android - Xamarin.Auth (Android) - Chrome 自定义选项卡不会在重定向时关闭

function - 如何在map函数中连接列表-Haskell?

function - 有效使用函数作为参数