【发布时间】:2012-01-26 17:07:45
【问题描述】:
简介
elem.hidden 是一个新属性,允许隐藏元素并检测它们是否被隐藏。
浏览器支持不是很好,所以我想对其进行填充。如果我要填充这个属性,在通过elem.style 设置 CSS 属性方面应该填充什么。
Shim 的简单实现
Object.defineProperty(HTMLElement.prototype, "hidden", {
get: function get() {
return this.style.<???>;
},
set: function set(v) {
this.style.<???> = v ? <???> : <???>
},
configurable: true
});
问题
- 应该将
elem.style.display设置为"none"还是<original value>? - 应该将
elem.style.visibility设置为"hidden"还是"visible"?
【问题讨论】:
-
大部分不支持 hidden 属性的浏览器也不支持 Object.defineProperty。
-
@kennebec 在 >= IE8 中工作,而其他浏览器通常在其最新版本中也能正常工作。
-
@kennebec 因此这是一个幼稚的实现。完整的垫片使用垫片
Object.defineProperty用于 IE8+ 和 pals,并使用 htc 文件用于 IE6/7
标签: javascript html polyfills