[英]Window navigator standalone and event listener - Javascript
我是Java語言新手。 我正在嘗試學習和理解以下代碼部分:
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頁面上,並且第一個條件為true(// 1。)。 頁面上有此鏈接:
<a href="http://test.gr/info.html" target="_blank">Info</a>
1)在哪種情況下第一個條件(// 1)為真?
2)點擊鏈接后會發生什么? 代碼何時通過while循環? 鏈接是在同一選項卡中打開還是在新選項卡中打開?
謝謝
1)在哪種情況下第一個條件(// 1)為真?
在iOS上使用Safari瀏覽器並設置支持apple-mobile-web-app-app的元標記時
<meta name="apple-mobile-web-app-capable" content="yes">
2)點擊鏈接后會發生什么? 代碼何時通過while循環? 鏈接是在同一選項卡中打開還是在新選項卡中打開?
while循環使click樹中的dom樹橫切,直到到達Anchor標簽或到達根HTML元素為止。
第二條if語句檢查停止的節點是否是具有有效href屬性的元素,如果不是,則什么也沒有發生。
否則, event.preventDefault()
阻止默認操作,在示例“錨點”的情況下,它將打開一個新選項卡。 然后, document.location.href
將當前選項卡更改為新位置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.