我正在构建一个基于phonegap的mobileweb应用程序,该应用程序几乎完全使用jquerymobile构建。
在几页中,有外部网站的链接,客户端想要显示一个弹出窗口,询问用户是否愿意离开应用程序并转到外部网站。如果用户选择关注该链接,客户还要求该应用程序退出。
这是我的JS:
if (typeof CORP == "undefined" || !CORP) {
var CORP = {};
}
(function() {
CORP.mk = {
var mobile = false;
init: function() {
$("[data-role='page']").on("pagebeforeshow", CORP.mk.setHandlers);
},
onDeviceReady: function () {
CORP.mk.mobile = true;
document.addEventListener("pause", CORP.mk.onPause, false);
},
onPause: function () { // Exit the app if it goes to background
navigator.app.exitApp();
},
setHandlers: function () {
if ( CORP.mk.mobile ) {
$("a[rel='external']").click(function (e) {
e.preventDefault();
CORP.mk.externalLink = $(this).attr("href");
alert(CORP.mk.externalLink);
navigator.notification.confirm("You are about to close this mobile app and open your web browser.",
CORP.mk.popupConfirm,
"Close This App?");
});
}
}
};
})():
$(document).bind("pageinit", CORP.mk.init);
document.addEventListener("deviceready", CORP.mk.onDeviceReady, false);
这是我的标记:
<a rel='external' data-ajax='false' href='http://www.google.com'>googly</a>
问题:我在chrome桌面浏览器上测试此代码忽略了CORP.mk.mobile
,它运行正常。但是,$(this).attr("href");
始终会为'#'
或href
中的Android
返回IOS
,我无法使用phonegap启动外部应用程序。我希望能够获得实际链接并启动外部应用程序。我尝试了很多组合,找不到解决方案。欣赏任何见解。
答案 0 :(得分:0)
终于找到了问题。发生这种情况的原因是e.preventDefault();
正在替换链接。我很惊讶在桌面浏览器中不会发生这种情况。
所以,而不是
e.preventDefault();
CORP.mk.externalLink = $(this).attr("href");
我需要做
CORP.mk.externalLink = $(this).attr("href");
e.preventDefault();