天天看點

各浏覽器對使用 document.id 和 document.name 擷取對象的支援存在差異

無。

各浏覽器使用 document.id 和 document.name 方法擷取對象引用的支援存在差異。

某些浏覽器中通過 document.id 和 document.name 可能無法擷取元素,導緻腳本異常,功能不可用。

所有浏覽器

浏覽器中每一個 XML 和 HTML 文檔都用一個 Document 對象來表示。

Document 繼承了 HTMLDocument 接口。

HTMLDocument 接口定義了實作它的對象所擁有的方法和屬性。其中包括資源中繼資料管理、DOM 樹的通路、動态标記插入、使用者互動和事件處理屬性等。

W3C 在 HTML5 草案中規定了一系列 DOM 樹節點的通路方式,并不包括 document.id 或 document.name。

通路 DOM 樹中某個節點的方法,W3C 中推薦的是使用 document.getElementById(id),根據一個元素的 id 屬性擷取它的 DOM 節點對象。

還有很多其他的方式,也可以擷取頁面上的元素,但這些方式不是 W3C 标準中規定的,是以對這些方法的支援因浏覽器而異。這其中,就有使用 document.id 或 document.name 擷取元素的方式。

使用 document.id 和 document.name 通路 DOM 樹中節點的方法,可以通路 IMG 元素、IFRAME 元素和 FORM 元素。

除了 Opera IE 同時支援用 document.id 和 document.name 通路這 3 種元素的節點對象外,而其它浏覽器對用其 name 和 id 的支援有所不同。

分析以下代碼:

以上測試用例中使用 document.id 和 document.name 的方法擷取 DOM 樹中的 IFRAME 元素引用,如果存在則傳回 true,否則傳回 false 。

擷取元素後的傳回值将輸出到 info 中

上面測試用例中,IE Opera 均全傳回 true,Firefox 傳回 false,而 Safari Chrome 中 document.id 是 false,document.name 是 true。

用其他元素替換 IFRAME 元素,可以測試其它元素的情況。 如下表:

擷取方式

IE6

IE7

IE8

Firefox

Chrome

Safari

Opera

Q

S

document.div_id

N

document.div_name

document.span_id

document.span_name

document.select_id

document.select_name

document.a_id

document.a_name

document.input_id

document.input_name

document.img_id

Y

document.img_name

document.form_id

document.form_name

document.iframe_id

document.iframe_name

document.object_id

document.object_name

document.embed_id

document.embed_name

說明:

此彙總表中 Q 代表 Quirks Mode,S 代表 Standards Mode;

以 document.element_id、document.element_name 表示擷取方式,如 document.div_id 表示利用 id 屬性擷取 DIV 元素對象,而 document.span_name 表示使用 SPAN 元素的 name 屬性來擷取它的對象。

使用 W3C 标準中的 document.getElementById(id) 方法擷取對象。

繼續閱讀