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