我制作了一个简单的 Javascript 例程,它报告浏览器中存在的所有样式属性。
var list = new Array();
var div = document.createElement('div');
for (var style in div.style)
list.push(style);
它有效。结果是 JavaScript 格式,例如borderTopLeftRadius
表示 CSS 属性border-top-left-radius
、MozAnimationTimingFunction
方法-moz-animation-timing-function
等。
这是一个小提琴,您可以在其中看到它。
(顺便说一下,该列表有缺陷。例如,在 Firefox 和 IE 中,该列表甚至不包含float
,但在 Chrome 中却包含。Firefox 和 IE 有cssFloat
。哦,我可以忍受。)
到目前为止,一切都很好。
但是,我的目标是只有一个 CSS 属性名称列表。但结果还包括根本不是属性名称的条目,例如getPropertyPriority
和length
。我的问题是,我怎样才能过滤掉这些?如何区分这些条目(有些是 Javascript 函数,有些是只读属性)和实际的 CSS 属性名称?
编辑:
我不介意仅适用于 SVG 的属性;保留这些没关系。
此外,虽然可以通过检查属性是否为 Mr_Green 指出的“字符串”类型来过滤掉大多数有问题的条目(参见更新的小提琴),但列表中仍有一些条目不是 CSS 属性名称,例如cssText
和marks
(后者仅在某些浏览器中)。我也想过滤掉那些,但还没有找到办法。
W3C 提到了一个名为的函数,supports()
但我无法完成这项工作。谁能给我举个例子?