2

我制作了一个简单的 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-radiusMozAnimationTimingFunction方法-moz-animation-timing-function等。

这是一个小提琴,您可以在其中看到它。

(顺便说一下,该列表有缺陷。例如,在 Firefox 和 IE 中,该列表甚至不包含float,但在 Chrome 中却包含。Firefox 和 IE 有cssFloat。哦,我可以忍受。)

到目前为止,一切都很好。
但是,我的目标是只有一个 CSS 属性名称列表。但结果还包括根本不是属性名称的条目,例如getPropertyPrioritylength。我的问题是,我怎样才能过滤掉这些?如何区分这些条目(有些是 Javascript 函数,有些是只读属性)和实际的 CSS 属性名称?

编辑:
我不介意仅适用于 SVG 的属性;保留这些没关系。

此外,虽然可以通过检查属性是否为 Mr_Green 指出的“字符串”类型来过滤掉大多数有问题的条目(参见更新的小提琴),但列表中仍有一些条目不是 CSS 属性名称,例如cssTextmarks(后者仅在某些浏览器中)。我也想过滤掉那些,但还没有找到办法。

W3C 提到了一个名为的函数,supports()但我无法完成这项工作。谁能给我举个例子?

4

1 回答 1

0

我不知道您的目标是否是检查是否支持某个属性,但是

function isPropertySupported(property)
{
    return property in document.body.style;
}

可以检查是否支持属性。我希望它有所帮助。如果我错了,请纠正我。

检查是否支持 CSS 属性

编辑:

看看这个CSS 支持

supports(DOMString property, DOMString value), returns boolean
supports(DOMString conditionText), returns boolean

supports()使用两个参数 property 和 value 调用该方法时,如果 property 是 UA 支持的 CSS 属性名称的文字匹配,则它必须返回 true,并且 value 将被成功解析为该属性的支持值。(字面匹配意味着不执行 CSS 转义处理,并且不剥离前导和尾随空格,因此任何前导空格、尾随空格或与属性名称等效的 CSS 转义都会导致方法返回 false。)否则,它必须返回 false。

于 2013-08-27T07:56:43.117 回答