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