Window 独立导航器和事件侦听器 - Javascript

Window navigator standalone and event listener - 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.)。页面上有这个link:

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

1)第一个条件(//1)在什么情况下为真?

2)点击link后会发生什么?代码什么时候通过while循环? link 是在同一选项卡中打开还是在新选项卡中打开?

谢谢

1) Under which circumstances the first condition (//1) is true?

在 iOS 和 setting the apple-mobile-web-app-capable 元标记上使用 Safari 浏览器时

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

2)What happens after clicking on the link? When the code pass the while loop? Does the link open in the same tab or in a new tab?

while 循环从被点击的元素开始横向向上 dom 树,直到到达锚标记或到达根 HTML 元素。

第二个 if 语句检查停止的节点是否是具有有效 href 属性 的元素,如果不是,则不会发生任何其他情况。

否则 event.preventDefault() 会阻止默认操作,在示例 Anchor 的情况下,默认操作将打开一个新选项卡。 document.location.href 然后将当前选项卡更改到新位置。