我是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循环时?链接是在同一个标签页或新标签页中打开的吗?
由于
答案 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
然后将当前标签更改为新位置。