簡體   English   中英

窗口導航器獨立和事件偵聽器-Javascript

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM