【发布时间】: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