无法在Cordova项目的WebView中执行Js代码
Unable to execute Js code in WebView in Cordova Project
我有两个activity,一个主要的activity(A)是一个CordovaActivity,然后我用intent启动另一个activity(B),在B 我有一个 WebView(不是 CordovaActivity),在我使用这个 webview 加载一个简单的网页后(提醒一些东西),我发现 js 代码根本没有执行,即使我启用 javascript 通过调用 setttings.setJsenabel(true);
我从A开始activityB
从 Activity B 中的网络视图加载 Url
简单网页
在设备中,它不提示任何东西
但是,如果我将 webview 更改为 CordovaWebView 而不是原来的 Android 本机视图,它就可以工作......
那是因为普通 WebView 本身不支持显示警报。您需要为其提供一个实现 WebChromeClient.onJsAlert
方法的 WebChromeClient。例如:
mywebView.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onJsAlert(
WebView view, String url, String message, final JsResult result) {
new AlertDialog.Builder(view.getContext())
.setTitle("Alert")
.setMessage(message)
.setPositiveButton("Ok",
new AlertDialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
result.confirm();
}
}).setCancelable(false).create().show();
return true;
}
});
我有两个activity,一个主要的activity(A)是一个CordovaActivity,然后我用intent启动另一个activity(B),在B 我有一个 WebView(不是 CordovaActivity),在我使用这个 webview 加载一个简单的网页后(提醒一些东西),我发现 js 代码根本没有执行,即使我启用 javascript 通过调用 setttings.setJsenabel(true);
我从A开始activityB
从 Activity B 中的网络视图加载 Url
简单网页
在设备中,它不提示任何东西
但是,如果我将 webview 更改为 CordovaWebView 而不是原来的 Android 本机视图,它就可以工作......
那是因为普通 WebView 本身不支持显示警报。您需要为其提供一个实现 WebChromeClient.onJsAlert
方法的 WebChromeClient。例如:
mywebView.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onJsAlert(
WebView view, String url, String message, final JsResult result) {
new AlertDialog.Builder(view.getContext())
.setTitle("Alert")
.setMessage(message)
.setPositiveButton("Ok",
new AlertDialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
result.confirm();
}
}).setCancelable(false).create().show();
return true;
}
});