如何在按下后退键关闭Android中的html对话框

时间:2014-02-12 12:04:14

标签: javascript android webview

我已经在Android中创建了一个webview,我正在加载我的html文件。在点击按钮的时候,我正在显示一个弹出式的警告对话框,它是用html本身开发的。 现在的问题是,当我按下Android手机上的按钮后,应用程序将返回上一页。但是只有相同的行为,应该关闭对话框并且应用程序应该在同一页面上。 我怎样才能实现它? 感谢

2 个答案:

答案 0 :(得分:1)

我认为你不需要JavascriptInterface(如@Henil发布的那样)。我会这样做:

Java中的

- onBackPressed:

if (webView.getUrl.equals("yourPopupUrl.com")) {
  webView.loadUrl("javascript:goAwayPopup();");
  return;
}
JS中的

function goAwayPopup() {
  var popUp = document.getElementById("popUp"); // in my case popUp is just a <div>
  var isVisible = popUp .offsetWidth > 0 || popUp .offsetHeight > 0;
  if (isVisible) {
    popUp.style.display = 'none';
  }
}

修改

使用JavascriptInterface解决方案:

在JS中 - 当弹出对话框时调用的函数:

function popUp() {
  if (typeof Android != "undefined"){ 
    if (Android.popUp!= "undefined") {
      Android.popUp();
    }
  }
}
Java中的

在Activity

中定义内部类和布尔字段

将网桥声明为您的网页视图

覆盖onBackPressed

private boolean isPopUpVisible = false;

// some code...

webView.addJavascriptInterface(new MyJavascriptBridge(), "Android");

// some code...

class MyJavascriptBridge { 

  public void popUp() {
    if (isPopUpVisible)
      isPopUpVisible = false;
    else
      isPopUpVisible = true; 
  }
}

onBackPressed:

if (isPopUpVisible) {
  webView.loadUrl("javascript:goAwayPopup();");
  return;
}

JS,再次:

function goAwayPopup() {
  // close alert here...
  popUp(); // sets isPopUpVisible to false
}

以下是关闭提醒的帖子:How to "auto close" Alert boxes

答案 1 :(得分:0)

使用java脚本界面并处理该界面的html页面