2017-10-31 6 views
0

Javascriptが新機能です。以下のを想像して、今すぐウィンドウナビゲータスタンドアローンとイベントリスナー - Javascript

if(("standalone" in window.navigator) && window.navigator.standalone){ //1 

    var node = false; 

    document.addEventListener('click', function(event) { 

    node = event.target; 

    while(node.nodeName !== "A" && node.nodeName !== "HTML") { 
    node = node.parentNode; 
    } 

    if('href' in node && node.href.indexOf('http') !== -1 && 
    (node.href.indexOf(document.location.host) !== -1)){ 

     event.preventDefault();         
     document.location.href = node.href;        }     
    },false); 
    } 

:私は、次のコードの一部を研究し、理解しようとしていますが、ページhttp://test.gr/index.html上にあり、最初の条件が真である(// 1。)。このページにこのリンクがあります:

<a href="http://test.gr/info.html" target="_blank">Info</a> 

1)最初の条件(// 1)がtrueの場合は?

2)リンクをクリックした後はどうなりますか?コードがwhileループを渡すとき?リンクは同じタブまたは新しいタブで開きますか?

おかげ

答えて

1

1)どのような状況下では第一の条件(// 1)は本当ですか?

リンクをクリックした後に何が起こる)

<meta name="apple-mobile-web-app-capable" content="yes"> 

2のiOS上のSafariブラウザを使用して、そしてsetting the apple-mobile-web-app-capableメタタグ?ループ中にコードが を渡すと?リンクは同じタブまたは新しいタブで開きますか?

whileループは、アンカータグに到達するか、ルートHTML要素に到達するまで、クリックされた要素からdomツリーを横断します。

2番目のif文は、停止したノードが有効なhrefプロパティを持つ要素であるかどうかをチェックします。それ以外の場合は何も起こりません。

event.preventDefault()は、デフォルトのアクションを防止します。アンカーの例では、新しいタブを開くことになります。 document.location.hrefは現在のタブを新しい場所に変更します。

関連する問題