退出Cordova中的inappbrowser之前的警告对话框

时间:2017-08-07 10:41:03

标签: cordova alertdialog inappbrowser

我是否知道如何创建一个警告对话框,询问用户当用户按下硬件后退按钮时是否确认退出cordova中的inappbrowser?我曾尝试使用ref.addEventListener(' exit',onBackKeyDown);做到但没有成功。请帮助我并提供任何解决方案。非常感谢你。

3 个答案:

答案 0 :(得分:0)

使用" _blank" 代替" _self" 。 '退出'如果在现有视图中打开外部源,则会触发事件。

var ref = window.open('http://google.com', '_blank', 'location=no');

     ref.addEventListener('exit', function(event){  Exit(); });

 function Exit(){
              navigator.notification.confirm(
                'Do you want to exit app?',  
                function(i){
                    if(i==2)
                     {
                       navigator.app.exitApp(); //This will Close the App
                     }
                },              
                'App Name',            
                'Cancel,Exit'          
              );
 }

希望这有助于你

答案 1 :(得分:0)

要创建一个警告对话框,询问用户当用户按下硬件后退按钮时是否确认退出cordova中的inappbrowser,您需要:

A)修改位于your_project / platforms / android / src / org / apache / cordova / inappbrowser /的InAppBrowserDialog.java。
B)添加import android.content.DialogInterface;添加所需的导入。
C)修改onBackPressed()函数 FROM:

public void onBackPressed () {
if (this.inAppBrowser == null) {
    this.dismiss();
} else {
    // better to go through the in inAppBrowser
    // because it does a clean up
    if (this.inAppBrowser.hardwareBack() && this.inAppBrowser.canGoBack()) {
        this.inAppBrowser.goBack();
    }  else {
        this.inAppBrowser.closeDialog();
    }
}

}

TO:

public void onBackPressed() {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context)
    .setTitle("Exit")
    .setMessage("You are about to exit, are you sure?")
    .setPositiveButton("Exit", new DialogInterface.OnClickListener(){
        public void onClick(DialogInterface dialog, int which){
            if (inAppBrowser == null) {
                dismiss();
            } 
            else {
                // better to go through the in inAppBrowser
                // because it does a clean up
                if (inAppBrowser.hardwareBack() && inAppBrowser.canGoBack()) {
                    inAppBrowser.goBack();
                }  else {
                    inAppBrowser.closeDialog();
                }
            }
        }
    })
    .setNegativeButton("Cancel", new DialogInterface.OnClickListener(){
        public void onClick(DialogInterface dialog,int which){
            dialog.cancel();
        }
    });
    alertDialogBuilder.create();
    alertDialogBuilder.show();

}

答案 2 :(得分:0)

要在单击后退按钮后显示弹出确认。

首先通过运行“ cordova plugin add cordova-plugin-dialogs”安装对话框插件。

然后通过运行“ cordova plugin add https://github.com/lesteenman/cordova-plugin-injectview.git”来安装cordova-plugin-injectview

在由inAppBrowser加载的页面中添加以下代码。

document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
    document.addEventListener("backbutton", onBackKeyDown, false);
}
function onBackKeyDown(e) {
    e.preventDefault();
    navigator.notification.confirm("Are you sure you want to exit ?", onConfirm, "Confirmation", "Yes,No");
}
function onConfirm(button) {
    if(button==1){
        navigator.app.exitApp();
    }else{
        return;
    }
}