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
然后将当前选项卡更改到新位置。
我是 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
然后将当前选项卡更改到新位置。