Javascript 如何在Android中按back键关闭html对话框

Javascript 如何在Android中按back键关闭html对话框,javascript,android,webview,Javascript,Android,Webview,我已经在Android中创建了一个webview,我正在其中加载我的html文件。单击按钮时,我会显示一个类似弹出窗口的警报对话框,该对话框是用html本身开发的。 现在的问题是,只要我按下android手机上的“后退”按钮,应用程序就会返回到上一页。但由于行为相同,只有对话框应该关闭,应用程序应该在同一页上。 我怎样才能做到呢? 感谢您使用java脚本接口并从该接口处理html页面我认为您不需要JavascriptInterface(如@Henil发布的)。我想这样做: 在Java-onBac

我已经在Android中创建了一个webview,我正在其中加载我的html文件。单击按钮时,我会显示一个类似弹出窗口的警报对话框,该对话框是用html本身开发的。 现在的问题是,只要我按下android手机上的“后退”按钮,应用程序就会返回到上一页。但由于行为相同,只有对话框应该关闭,应用程序应该在同一页上。 我怎样才能做到呢?
感谢您使用java脚本接口并从该接口处理html页面

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

在Java-onBackPressed中:

if (webView.getUrl.equals("yourPopupUrl.com")) {
  webView.loadUrl("javascript:goAwayPopup();");
  return;
}
if (isPopUpVisible) {
  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';
  }
}
在Java中:

在活动中定义内部类和布尔字段

向您的webview声明桥

反压覆盖

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; 
  }
}
反压:

if (webView.getUrl.equals("yourPopupUrl.com")) {
  webView.loadUrl("javascript:goAwayPopup();");
  return;
}
if (isPopUpVisible) {
  webView.loadUrl("javascript:goAwayPopup();");
  return;
}
JS,再一次:

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

这是一篇关于关闭警报的帖子:

我这样做了,但是当弹出窗口打开时,我没有得到实例,这样我就可以在按back键时隐藏它。你能用一些代码解释一下吗。这会很有帮助的转到:@MD,这与他的问题无关。@Overv我想。这是Thanx,我尝试了这种方法,但是Java popUP()函数不是从JS调用的。在JS代码中,您在哪里/什么时候调用popUP?我调用它,正如您所示,在这里我隐藏了我的popUP,popUP正在隐藏,但当我按back键时,我使用了上面相同的代码,但为什么在我的代码中Android的类型是未定义的,因此我得到了未捕获的引用错误:Android没有定义,例外你真的正确设置了JavaScriptInterface吗?您是否在webview中启用了JavaScript?