覆盖HTMLElement.classList属性

时间:2011-11-21 18:40:35

标签: javascript

是否可以覆盖WebKit(Chrome)中的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。

2 个答案:

答案 0 :(得分:3)

你的div没有从原型获得classList。它是div的直接财产。永远不会搜索原型链:

myDiv.hasOwnProperty("classList"); // returns true

答案 1 :(得分:2)

我想您应该使用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