我想知道是否有办法从本地Android Activity中调用JavaScript函数。
我找到了以下信息:
webView.loadUrl("javascript:hello()");
但对我来说没有起作用。
另外,安卓如何知道这个 JavaScript 函数位于哪个 HTML 页面中?
我想知道是否有办法从本地Android Activity中调用JavaScript函数。
我找到了以下信息:
webView.loadUrl("javascript:hello()");
但对我来说没有起作用。
另外,安卓如何知道这个 JavaScript 函数位于哪个 HTML 页面中?
只有在webView中当前加载了HTML页面,Android 才能调用 JavaScript 方法。
webView.loadUrl("javascript:hello()");
仅当包含此方法的页面当前已在webview控件中加载时,才会调用在HTML页面中编写的 hello 方法。
第一次调用
webview.loadUrl("Your html page url");
然后调用。webView.loadUrl("javascript:hello()");
如果有人像我一样遇到问题,需要在页面加载完成后调用JavaScript函数,否则JavaScript将不会被调用:
webviewer.loadUrl("file:///android_asset/mypage.html");
webviewer.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url)
{
webviewer.loadUrl("javascript:hello()");
}
});
在使用JavaScript之前,您首先需要使用“getJavaScriptEnabled()”(其默认为FALSE)检查应用程序中是否已启用JavaScript。loadUrl()方法仅用于加载当前页面。它不涉及JavaScript相关的内容。
例如:
设置WebView
//初始化webview
webView = (WebView) findViewById(R.id.webView);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
在WebView中加载HTML
webView.loadUrl("file:///android_asset/testhtml.html");
将WebChromeClient设置为webView
webView.setWebChromeClient(new MyJavaScriptChromeClient());
MyJavaScriptChromeClient类 在这里,我们需要重写onJsAlert()方法来处理JavaScript Alert函数。
private class MyJavaScriptChromeClient extends WebChromeClient {
@Override
public boolean onJsAlert(WebView view, String url, String message,final JsResult result) {
//handle Alert event, here we are showing AlertDialog
new AlertDialog.Builder(MainWebViewActivity.this)
.setTitle("JavaScript Alert !")
.setMessage(message)
.setPositiveButton(android.R.string.ok,
new AlertDialog.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// do your stuff
result.confirm();
}
}).setCancelable(false).create().show();
return true;
}
}
我的HTML文件: testhtml.html:
<html>
<body >
<div onclick="alert('hello')"> Click Me !! </div>
</body>
</html>
它是如何工作的? 当WebView上的文本“Click Me !!”被点击时,将调用android函数onJsAlert(WebView view,String url,String message,final JsResult result)。 警报的参数被复制到onJsAlert函数的message参数中。 其余处理在那里完成。 在这里,我们正在显示一个AlertDialog。