在iPhone上以独立模式保留某些链接

时间:2012-06-05 14:01:31

标签: jquery iphone iphone-standalone-web-app

我发现这个gist会阻止网页链接超出"独立模式"在iPhone上,但我想在某些类别的链接上禁用此功能。

每当存在一个模态时,此功能会破坏它并快速打开模态,然后重定向到href

代码:

    if(("standalone" in window.navigator) && window.navigator.standalone) {
      var noddy, remotes = false;
      document.addEventListener('click', function(event) {
        noddy = event.target;
        while(noddy.nodeName !== "A" && noddy.nodeName !== "HTML") {
              noddy = noddy.parentNode;
          }
        if('href' in noddy && noddy.href.indexOf('http') !== -1 && (noddy.href.indexOf(document.location.host) !== -1 || remotes)) {
          event.preventDefault();
          document.location.href = noddy.href;
        }
      }, false);
    }

如何修改它以包含a类,open, modal不应该使用上述功能并且只保持模态打开?

1 个答案:

答案 0 :(得分:1)

试试这个。

if(("standalone" in window.navigator) && window.navigator.standalone) {
  var noddy, remotes = false;
  document.addEventListener('click', function(event) {
    noddy = event.target;
    var className = noddy.className;
    if(noddy.nodeName === "A" 
        && (className.indexOf('open') != -1 || className.indexOf('modal') != -1)){
         return;//Just return without doing anything
    }

    while(noddy.nodeName !== "A" && noddy.nodeName !== "HTML") {
          noddy = noddy.parentNode;
      }
    if('href' in noddy && noddy.href.indexOf('http') !== -1 && (noddy.href.indexOf(document.location.host) !== -1 || remotes)) {
      event.preventDefault();
      document.location.href = noddy.href;
    }
  }, false);
}

如果您在页面或应用程序中使用jQuery,请注意使用内置apis的jQuery,可以大大减少代码。