JavaScript警报在Android WebView中不起作用

在我的应用程序中,我正在使用WebView并使用JavaScript alert( )方法,但它不工作,没有popup窗口。

在我的清单文件中,我已经添加了

 <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" /> 

任何线索如何在WebView启用完整的JavaScript


更新

谢谢马克
html文件中的alert()方法正在工作:)。

现在在WebView有两个问题:
1:我在使用WebView加载的html文件中使用<textarea> ,并尝试使用印地语语言编写字体,但是当我尝试编写印地文文本时,它显示为符号(矩形符号,如[]) 。

当我在桌面上的Firefox浏览器中做同样的工作正常。 任何线索如何在WebView textarea中支持多语言?

2:当我单击提交并尝试打开另一个Java脚本中的alert()方法中的文本的值时,它不起作用,这是否意味着即使在使用WebChromeClient它仅适用于当前加载的HTML页面,而不是从那个页面?

检查这个链接,最后的评论,你必须使用WebChromeClient为您的目的。

阅读答案后,这应该做的伎俩让alert()工作:

 mWebView.getSettings().setJavaScriptEnabled(true); mWebView.setWebChromeClient(new WebChromeClient()); 

即需要启用JavaScript,默认的WebChromeClient()足以使JavaScript alert()正常工作。

  webView.setWebChromeClient(new WebChromeClient() { @Override public boolean onJsAlert(WebView view, String url, String message, JsResult result) { return super.onJsAlert(view, url, message, result); } }); 

以下代码将起作用:

 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"); } 

你可以尝试这个,它为我工作

 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); } });