【问题标题】:jquerymobile href links not visibiel with phonegap on android and iOSjquery mobile href链接在android和iOS上的phonegap不可见
【发布时间】:2012-07-24 04:20:18
【问题描述】:

我正在构建一个基于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 中的hrefIOS 返回'#',并且我无法使用phonegap 启动外部应用程序。我希望能够获得实际链接并启动外部应用程序。我尝试了很多组合,但找不到解决方案。欣赏任何见解。

【问题讨论】:

    标签: android ios jquery-mobile cordova attr


    【解决方案1】:

    终于找到问题了。这是因为e.preventDefault(); 正在替换链接。我很惊讶这不会发生在桌面浏览器中.. 所以,而不是

    e.preventDefault();
    CORP.mk.externalLink = $(this).attr("href");
    

    我需要做的

    CORP.mk.externalLink = $(this).attr("href");
    e.preventDefault();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-19
      • 1970-01-01
      • 2011-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-26
      相关资源
      最近更新 更多