覆盖HTMLElement.classList属性
问题描述:
是否可以重写WebKit(Chrome)中的HTMLElement.classList属性?覆盖HTMLElement.classList属性
我用下面的代码尝试:
Object.defineProperty(window.HTMLElement.prototype, "classList", {
get : function() {
console.log("test");
return 1;
},
set : function(newValue){ },
enumerable : true,
configurable : true}
);
但是,调用一个DIV的classList
仍然会返回DOMTokenList。
答
我猜你应该做你已经与HTMLDivElement
,不HTMLElement
做了什么。但是,我做到了,仍然没有结果。
但是,如果你想要做你的那一刻的工作,你可以直接在div
实例本身应用代码:
<div id='target' class='first second third'>
</div>
和:
var div = document.getElementById('target');
Object.defineProperty(div, 'classList', {
get: function(){
return 'overridden';
}
});
alert(div.classList);
看到这个fiddle。
我不知道你是否动态地创建div,但如果是这样,你可以在返回元素之前覆盖'document.createElement'并在创建的元素上定义'classList'。 – pimvdb