【问题标题】:navigator.notification.confirm does not work. Need to hit back button twice to close the appnavigator.notification.confirm 不起作用。需要按两次返回按钮才能关闭应用程序
【发布时间】:2014-02-16 12:54:15
【问题描述】:

我想在退出我的应用程序之前进行确认。为此,我正在使用cordova (Phonegap) 的navigator.notification.confirm 功能。

我的问题是当我单击一次后退按钮时,它会给我一条确认消息。确认后,理想情况下应该关闭应用程序,但事实并非如此。我需要再次单击后退按钮。这次它在不要求确认的情况下关闭了应用程序。

这意味着回调函数不会在确认时被调用。

谁能帮我解决这个问题。下面是我的 deviceready 事件监听器。

另外请注意它在 Eclipse 模拟器上工作得非常好。它仅在 android 设备上失败。

document.addEventListener("deviceready", deviceisready, false);

function deviceisready(){
    alert("Device Ready is called");
    document.addEventListener("backbutton", function(e){
        if ( $('.ui-page-active').attr('id') == 'mainpage') {
            //window.location = "#exitDialog";
            exitAppPopup();
        }else{
            history.back();
        };
    });
};

function exitAppPopup() {
    navigator.notification.confirm(
        "Do you really want to close this app?", 
        function(buttonIndex){
            ConfirmExit(buttonIndex);
        }, 
        "Confirmation", 
        "Yes,No"
    ); 
    alert("Outside Notification"); 
    //return false;
};

function ConfirmExit(stat){
    alert("Inside ConfirmExit");
    if(stat == "1"){
        navigator.app.exitApp();
    }else{
        return;
    };
};

以下是我的 html 代码,其中包含两个页面。只有在我的主页上,我才会在点击后退按钮时收到确认消息。

<!DOCTYPE HTML>
<html>
<head>

<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1" />
<title>Test</title>
<script src="js/cordova.js" type="text/javascript"></script>
<script src="js/jquery-1.9.1.min.js" type="text/javascript"></script>
<script src="js/jquery.mobile-1.3.2.min.js" type="text/javascript"></script>
<script src="js/jquery.custom.js" type="text/javascript"></script>

<link href="css/jquery.mobile-1.3.2.min.css" rel="stylesheet" type="text/css">
<link href="css/jquery.custom.css" rel="stylesheet" type="text/css">

</head>

<body>
    <div data-role="page" id="mainpage">
        <div data-id="commonHeader" data-role="header" data-position="fixed">
            <h1>Test Page 1</h1>
        </div>
        <div data-role="content">
            <ul id="mainlist" data-role="listview">
                <li><a href="#">Page 1</a></li>
            </ul>
        </div>
        <div data-id="commonFooter" data-role="footer" id="mainfooter" data-position="fixed">
            <div data-role="navbar">
                <ul>
                    <li><a href="#mainpage" data-icon="home" id="gen_mainpage">Main</a></li>
                    <li><a href="#mainsearch" data-icon="search" id="src_mainpage">Search</a></li>
                </ul>
            </div>
        </div>
    </div>
    <div data-role="page" id="mainsearch">
        <div data-id="commonHeader" data-role="header" data-position="fixed">
            <h1>Test Page 2</h1>
        </div>
        <div data-role="content">
            <ul id="mainSearchList" data-role="listview">
                <li><a href="#">Page 2</a></li>
            </ul>
        </div>
        <div data-id="commonFooter" data-role="footer" id="mainsearchfooter" data-position="fixed">
            <div data-role="navbar">
                <ul>
                    <li><a href="#mainpage" data-icon="home" id="gen_mainsearch">Main</a></li>
                    <li><a href="#mainsearch" data-icon="search" id="src_mainsearch">Search</a></li>
                </ul>
            </div>
        </div>
    </div>    
</body>
</html>

【问题讨论】:

  • 谁能帮帮我?即使是很小的进步也会很棒。
  • 尝试使用$.mobile.activePage[0].id == "mainpage" 而不是$('.ui-page-active').attr('id')。或收听浏览器的返回按钮navigate事件stackoverflow.com/a/18213393/1771795
  • 嗨,奥马尔,问题不在于。如果您注意到我的函数中有两个警报。一个是在 exitAppPopup() 函数内部 - alert("Outside Notification");另一个在 ConfirmExit() 函数内部 - alert("Inside ConfirmExit");。因此,当我点击返回按钮时,我收到第一个警报“外部通知”,然后收到确认消息“您真的要关闭此应用程序吗?”。确认没有任何反应。但是,当我第二次点击返回按钮时,我收到“Inside ConfirmExit”警报,并且应用程序关闭。所以问题不在于活动页面。

标签: jquery jquery-mobile cordova


【解决方案1】:

我终于找到了解决问题的方法。这是一个非常愚蠢的问题,我浪费了很多时间。

对于所有遇到类似问题并且无法通过 stackoverflow 上提供的各种解决方案解决问题的人,请确保您使用了相同版本的 cordova.js 和 cordova-x.x.x.jar 文件。就我而言,我有两个不同版本的这些文件。

解决了这个问题,我的问题就解决了。 感谢所有尝试帮助我的人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    • 2018-09-07
    • 1970-01-01
    • 1970-01-01
    • 2017-05-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多