1
我知道這個問題已經被問了很多次,我已經檢查了所有的解決方案並研究了一切。但是,這根本不適合我。在WebView中調用JavaScript函數
我不知道我在做什麼錯。有人可以幫我嗎?
我加載本地HTML文件在我WebView
,然後調用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>
哦!感謝那些信息..其實我的要求是將參數傳遞給HTML頁面。起初,我在第一個loadUrl路徑中嘗試了字符串查詢。但是,這是給網頁找不到錯誤,並在搜索後發現這種方法。無論如何,我會嘗試用WebViewClient實現onPageFinished()。非常感謝! – Rachit 2013-03-07 20:58:51
@Rachit:是的,你不能在本地路徑上使用查詢參數,只能使用Web URL。但是,請記住,您的JavaScript代碼可以通過JavaScriptInterface上公開的方法調用迴應用程序以檢索此數據,並且您的腳本通過MyInterface上的調用進行檢索。你不需要再次調用'loadUrl()' - 讓腳本*拉*數據,而不是你推送數據。 – CommonsWare 2013-03-07 21:01:28
是的,我沒有想到這一點。但性能明智,哪種方法會更快?其中任何一個參數都可以。但是,如果我不得不在不同時間交換多個參數,是否有一個權衡? – Rachit 2013-03-07 21:08:30