通常,当我不使用 JQuery 时,我会使用以下实用程序函数从使用 Javascript 的样式表中获取属性。这可以很好地从 CSS 样式表中获取值:
<!DOCTYPE html>
<html>
<head>
<style>
.foo {
color: red;
}
</style>
<script type = "text/javascript">
function getcss(selector, property)
{
var len = document.styleSheets.length;
for (var idx = 0; idx < len; ++idx)
{
var sheet = document.styleSheets && document.styleSheets[idx];
if (sheet)
{
var r = sheet.rules ? sheet.rules : sheet.cssRules;
if (r)
{
var i = r.length;
while (i--)
{
if (r[i].selectorText && r[i].selectorText.toLowerCase() === selector.toLowerCase())
{
return (r[i].style[property]);
}
}
}
}
}
return null;
}
function exec()
{
alert(getcss(".foo", "color"));
}
</script>
</head>
<body onload = "exec()">
</body>
</html>
问题是它没有考虑媒体查询。 如果我将<style>
上述代码部分替换为:
.foo {
color: red;
}
@media screen and (max-width: 600px) {
.foo {
color: green;
}
}
...red
如果我将窗口缩小到小于600px
.
这是正确的 WC3 行为吗?或者这是一个浏览器错误?(我在 Ubuntu 上使用 Firefox 12 进行测试)。
无论如何要纠正这个问题,以便 Javascript 根据媒体查询的要求“看到”正确的样式表?