在我的应用程序中,我使用的是WebView
,因为我使用的是JavaScript alert( )
方法,但它不起作用,不会显示弹出窗口。
在我的清单文件中,我添加了
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
并在活动文件中添加了
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl("file:///android_asset/demo.html");
在布局xml文件中,我添加了
<WebView
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
如何在JavaScript
中启用完整WebView
?
更新
谢谢标志
alert()
文件中的html
方法现在正在运行:)。
现在WebView
有两个问题:
1:我在<textarea>
中加载的html文件中使用WebView
,并尝试用印地语编写字体,但当我尝试编写印地文文本时,它显示为符号(像[])这样的矩形符号。
当我在桌面上的firefox浏览器中执行相同操作时,它可以正常工作。
任何线索如何在textarea
中的WebView
中为多种语言提供支持?
2:当我点击提交并尝试在另一个java脚本中的alert()
方法中打开文本的值时,它不起作用,即使在使用WebChromeClient
之后也是如此
它仅适用于当前加载的html页面,而不是从该页面调用的javascripts
?
答案 0 :(得分:100)
正如其他人指出的那样,需要设置WebChromeClient才能使alert()
生效。只需设置默认的WebChromeClient():
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebChromeClient(new WebChromeClient());
感谢下面的所有评论。包括表示您需要启用JavaScript的John Smith。
答案 1 :(得分:82)
检查this链接和上次评论,您必须使用WebChromeClient
。
答案 2 :(得分:19)
webView.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
return super.onJsAlert(view, url, message, result);
}
});
答案 3 :(得分:5)
以下代码可以使用:
private WebView mWebView;
final Activity activity = this;
// private Button b;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setDomStorageEnabled(true);
mWebView.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
activity.setProgress(progress * 1000);
}
});
mWebView.loadUrl("file:///android_asset/raw/NewFile1.html");
}
答案 4 :(得分:1)
添加
test
它会起作用。
答案 5 :(得分:0)
你可以试试这个,它对我有用
WebView wb_previewSurvey=new WebView(this);
wb_previewSurvey.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
//Required functionality here
return super.onJsAlert(view, url, message, result);
}
});
答案 6 :(得分:0)
如果您希望向用户隐藏URL,请如下所示显示AlertDialog。
myWebView.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
Log.d(TAG, "onJsAlert url: " + url + "; message: " + message);
AlertDialog.Builder builder = new AlertDialog.Builder(
mContext);
builder.setMessage(message)
.setNeutralButton("OK", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int arg1) {
dialog.dismiss();
}
}).show();
result.cancel();
return true;
}
}