2012-06-05 43 views
0

我發現這個gist可以防止鏈接從網頁脫離iPhone上的「獨立模式」,但我想在某些類的鏈接上禁用此功能。保持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

試試這個。

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那麼你的代碼可以通過使用內置的API jQuery的減少非常多。

+0

它打開應用程序外的所有鏈接。如果我註釋掉獨立的'if'並留下剩下的部分,我會得到這個錯誤:SyntaxError:使用保留字'class' – Lee

+0

試試我的編輯答案。 – ShankarSangoli

+0

太棒了!謝謝! – Lee