DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> js contains方法實現代碼
js contains方法實現代碼
編輯:關於JavaScript     
為了兼容IE和FF我們不得不用以下方法: 

[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]
不過火狐支持compareDocumentPosition() 方法,這是W3C制定的方法,標准浏覽器都支持,不過實用性性很差,因此沒有什麼人用,推廣不開來。它的使用形式與contains差不多,但返回的不是一個布爾值,而是一個很奇怪的數值,它是通過如下方式累加計算出來的:
Bits Number Meaning 000000 0 元素一致 000001 1 節點在不同的文檔(或者一個在文檔之外) 000010 2 節點 B 在節點 A 之前 000100 4 節點 A 在節點 B 之前 001000 8 節點 B 包含節點 A 010000 16 節點 A 包含節點 B 100000 32 浏覽器的私有使用
[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]

PPK給出如下解決方法。
復制代碼 代碼如下:
if (window.Node && Node.prototype && !Node.prototype.contains){
Node.prototype.contains = function (arg) {
return !!(this.compareDocumentPosition(arg) & 16)
}
}

我搞出個更短的:
復制代碼 代碼如下:
if(!!window.find){
HTMLElement.prototype.contains = function(B){
return this.compareDocumentPosition(B) - 19 > 0
}
}


[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]
復制代碼 代碼如下:
//2011.9.24 by 司徒正美
var contains = function(root, el) {
if (root.compareDocumentPosition)
return root === el || !!(root.compareDocumentPosition(el) & 16);
if (root.contains && el.nodeType === 1){
return root.contains(el) && root !== el;
}
while ((el = el.parentNode))
if (el === root) return true;
return false;
}
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved