Window navigator独立和事件监听器 - Javascript

时间:2017-10-31 15:36:28

标签: javascript event-listener iphone-standalone-web-app

我是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)是真的?

2)点击链接后会发生什么?当代码通过while循环时?链接是在同一个标​​签页或新标签页中打开的吗?

由于

1 个答案:

答案 0 :(得分:1)

  

1)在哪种情况下第一个条件(// 1)是真的?

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

event.preventDefault()
  

2)点击链接后会发生什么?当代码通过时   循环?链接是在同一个标​​签页或新标签页中打开的吗?

while循环从被点击的元素向上遍历dom树,直到它到达Anchor标记或到达根HTML元素。

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

否则document.location.href会阻止默认操作,在示例中,Anchor将打开一个新选项卡。 group by然后将当前标签更改为新位置。