【问题标题】:Alert is not appear from web view in android?android 的 web 视图中不会出现警报?
【发布时间】:2011-09-21 17:34:38
【问题描述】:

我使用 Google 提供的示例来演示 JavaScript 和 Java 之间的双向通信,

参考[1]:

http://code.google.com/p/apps-for-android/source/browse/trunk/Samples/WebViewDemo/src/com/google/android/webviewdemo/WebViewDemo.java

该功能运行良好。我可以调用 JavaScript 函数 来自 Java 并从 JavaScript 回调 Java 函数。

问题是当我在 JavaScript 函数中使用警报时,它不会 出现了,但函数内部的功能正常工作。

为什么 alert("test") 在 JavaScript 函数中不会出现在 Android 中。 我将 JavaScript 加载到 web-view 中。当我在 Android 中单击按钮时 我调用了该函数,但它没有出现。

如果有人知道问题,请帮帮我。

谢谢

【问题讨论】:

标签: java javascript android android-webview


【解决方案1】:
setContentView(R.layout.main);
        WebView webview = (WebView) findViewById(R.id.webview);

        WebSettings webSettings = webview.getSettings();

        webSettings.setJavaScriptEnabled(true);

        webSettings.setBuiltInZoomControls(true);

        webview.requestFocusFromTouch();

        webview.setWebViewClient(new WebViewClient());
        webview.setWebChromeClient(new WebChromeClient());    

     webview.loadUrl("file:///android_asset/test.html");

此代码运行完美,并向我显示警报框.. 这是我的
test.html

<html>
<head>
<script type="text/javascript">
function show_alert()
{
alert("Hello! I am an alert box!");
}
</script>
</head>
<body>

<input type="button" onclick="show_alert()" value="Show alert box" />

</body>
</html>

【讨论】:

  • 是的,它正在工作,我犯了一个错误......而不是像你一样直接使用 WebChromeClient(),我将它用作最终类 MyWebChromeClient extends WebChromeClient { @Override public boolean onJsAlert(WebView view, String url, String message, JsResult 结果) { Log.d(LOG_TAG, message);结果.确认();返回真; } } 然后我按照你所说的那样使用它的工作
  • 但是有什么办法可以改变警报标题
【解决方案2】:

通过添加以下两行,我的 JavaScript 就可以工作了:

mWebview.setWebViewClient(new WebViewClient()());
mWebview.setWebChromeClient(new WebChromeClient());

【讨论】:

    【解决方案3】:

    使用以下方法,

    WebView wv=new WebView(this);   
    wv.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);
    }
    

    【讨论】:

      【解决方案4】:

      只需使用 WebChromeClient。它会做任何事情。

      mWebview.setWebChromeClient(new WebChromeClient());
      

      它会起作用的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-09
        • 2014-03-11
        • 1970-01-01
        • 1970-01-01
        • 2017-04-24
        相关资源
        最近更新 更多