这是不可能的。
乍一看,你会认为如果你自己的classList
实现HTMLElement
还不存在的话,你已经能够修补它。
if (!("classList" in document.createElement("div"))) {
HTMLElement.prototype.classList = {
contains: function () {
}
};
}
然而:
- 您的
contains
实现无法访问 DOMElement (this
是classList
对象,而不是元素
- 在旧版 IE 中扩展 DOM 对象是行不通的。
您唯一的选择是classList
用您自己的包装函数替换您的所有使用,classList
如果可用,该函数使用该功能,如果没有,则回退到您自己的实现。
var classListWrapper = (function () {
if ("classList" in document.createElement("div")) {
return {
add: function (el, class) {
el.className.add(class);
},
remove: function (el, class) {
el.className.remove(class);
},
// etc.
}
} else {
return {
add: function (el, class) {
el.className += ' ' + class;
},
remove: function (el, class) {
el.className = (' ' + el.className + ' ').replace(' ' + class + ' ', ' ');
},
// etc.
};
}
}());
...然后在您的代码中使用classListWrapper.add(element, class)
。