JavaScript警报在Android WebView中无效

use*_*192 81 javascript android

在我的应用程序中,我正在使用WebView,并且我正在使用JavaScript alert( )方法但它不起作用,没有弹出窗口出现.

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

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
Run Code Online (Sandbox Code Playgroud)

在我添加的活动文件中

mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl("file:///android_asset/demo.html");
Run Code Online (Sandbox Code Playgroud)

在我添加的布局xml文件中

<WebView 
    android:id="@+id/webview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
/>
Run Code Online (Sandbox Code Playgroud)

任何线索如何启用全JavaScriptWebView


更新

谢谢标记文件中
alert()方法html现在正在工作:).

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

当我在桌面上的firefox浏览器中做同样的事情它工作正常.任何线索如何给多语言支持textareaWebView

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

Ste*_*uan 106

正如其他人指出的那样,设置WebChromeClient需要开始alert()工作.只需设置默认的WebChromeClient()就足够了:

mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebChromeClient(new WebChromeClient());
Run Code Online (Sandbox Code Playgroud)

感谢下面的所有评论.包括表示您需要启用JavaScript的John Smith.

  • 我终于通过在`mWebView.setWebChromeClient(new WebChromeClient())行之前添加`mWebView.getSettings().setJavaScriptEnabled(true);`来设法让它工作. (10认同)
  • 不要忘记添加`webview.getSettings().setJavaScriptEnabled(true);` (2认同)

sat*_*sat 85

检查链接和最后评论,您必须使用WebChromeClient您的目的.

  • 谢谢!webView.setWebChromeClient(new WebChromeClient(){@ Override public boolean onJsAlert(WebView视图,String url,String message,JsResult result){return super.onJsAlert(view,url,message,result);}}); (8认同)
  • 这可能是一个愚蠢的问题,但无论如何:为什么要覆盖一个方法只用相同的参数调用超级方法? (3认同)

Nik*_*esh 20

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


小智 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");
}
Run Code Online (Sandbox Code Playgroud)