|
IE有許多好用的方法,后來都被其他瀏覽器抄襲了,比如這個(gè)contains方法。如果A元素包含B元素,則返回true,否則false。唯一不支持這個(gè)方法的是IE的死對(duì)頭firefox。
不過火狐支持compareDocumentPosition() 方法,這是W3C制定的方法,標(biāo)準(zhǔn)瀏覽器都支持,不過實(shí)用性性很差,因此沒有什么人用,推廣不開來。它的使用形式與contains差不多,但返回的不是一個(gè)布爾值,而是一個(gè)很奇怪的數(shù)值,它是通過如下方式累加計(jì)算出來的:
- 如果B與A不相連(Position disconnected),加1;(怎么我死活搞不出1來呢???)
- 如果B是在A的前面,加2;
- 如果B是在A的后面,加4;
- 如果B包含A,加8;
- 如果B被A包含,加16。
PPK給出如下解決方法。
if (window.Node && Node.prototype && !Node.prototype.contains){ Node.prototype.contains = function (arg) { return !!(this.compareDocumentPosition(arg) & 16) } }
我搞出個(gè)更短的:
if(!!window.find){ HTMLElement.prototype.contains = function(B){ return this.compareDocumentPosition(B) - 19 > 0 } }
it知識(shí)庫:javascript contains方法,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。