2013-05-30 31 views
1

我總是知道我們需要id屬性才能添加到元素中,只是爲了獲得一些獨特的訪問權限。 標題只是HTML文檔中的一個元素,所以它是一個獨特的元素。爲什麼Facebook在頁面標題上添加id =「pageTitle」?

它與JavaScript和框架有關嗎?或者因爲我們也有屬性標題,並再次爲一些JavaScript函數會更容易找到它的ID?

謝謝。

+0

難道是爲了優化?也許在他們的測試中,他們發現'$('#pageTitle')'比$('title')'快? –

+0

嗯..可能是一個原因..起初我認爲更多的一些注入框架(他們大量使用)可能有自己的頁面標題..並區分它們,他們已經添加ID –

回答

3

的原因有兩方面:

  1. 訪問標記名稱的任何(document.getElementsByTagName)總是會比訪問由ID(的document.getElementById)的東西慢。這是因爲getElementByTagName總是返回一個LIVE nodeList(或HTMLCollection)。這意味着它不僅需要搜索整個文檔結構來查找所有標題(並返回標題集合),它還會保持列表的生效並更新插入。而大多數瀏覽器都有一個非常快速的索引id的方法,它只會返回元素引用(即不需要更新任何內容)。

  2. 如果您在頁面上有框架,那麼document.getElementsByTagName('title')將返回頁面上所有標題的列表(即包括任何iframe標題),這顯然不是他們想要的。然後,他們必須搜索nodeList來查找他們正在查找的標題。我做的jsfiddle一個簡單的例子:http://jsfiddle.net/9QtZu/

    var titles = document.getElementsByTagName('title'); 
    console.log(titles); 
    

因此,使用的document.getElementById使他們能夠更快地訪問主標題,他們是後,同時也提高性能。沒有比賽。

https://developer.mozilla.org/en-US/docs/Web/API/document.getElementById https://developer.mozilla.org/en-US/docs/Web/API/element.getElementsByTagName

+0

足夠公平的CalM。謝謝 –

相關問題