首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >覆盖HTMLElement.classList属性

覆盖HTMLElement.classList属性
EN

Stack Overflow用户
提问于 2011-11-22 02:40:35
回答 2查看 871关注 0票数 5

是否可以覆盖WebKit (Chrome)中的HTMLElement.classList属性?

我正在尝试使用以下代码:

代码语言:javascript
复制
    Object.defineProperty(window.HTMLElement.prototype, "classList", {
        get : function() { 
            console.log("test");
            return 1; 
        },  
        set : function(newValue){  },  
        enumerable : true,  
        configurable : true}
    );  

但是,调用DIV的classList仍然会返回DOMTokenList。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-22 02:50:57

我想你应该做你对HTMLDivElement所做的事情,而不是HTMLElement。然而,我这样做了,仍然没有结果。

但是,如果您想暂时完成您的工作,您可以将代码直接应用于div实例本身:

代码语言:javascript
复制
<div id='target' class='first second third'>
</div>

和:

代码语言:javascript
复制
var div = document.getElementById('target');
Object.defineProperty(div, 'classList', {
    get: function(){
        return 'overridden';
    }
});
alert(div.classList);

请参阅此fiddle

票数 2
EN

Stack Overflow用户

发布于 2011-11-22 02:48:29

您的div没有从原型中获取classList。它是div的直接属性。永远不会搜索原型链:

代码语言:javascript
复制
myDiv.hasOwnProperty("classList"); // returns true
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8216792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档