2008-12-24 24 views
0

是否可以通过Javascript确定CSS文件中的样式?查找非活动CSS属性

我试图检测将应用于某个状态下的元素的CSS属性,在这种情况下为:hover,但没有当前在元素上处于活动状态的属性。我曾考虑克隆元素,将该克隆追加为display: none,并以这种方式查询属性,但我不知道如何通过Javascript强制使用:hover样式。有任何想法吗?

回答

0

悬停样式由浏览器应用,取决于鼠标移动。我不认为你可以通过JS强制它。但你为什么想要?只需定义另一个CSS类,并通过JS中的className属性进行分配。

+0

备选:一:悬停,.myAnchorHoverClass {/ *我的CSS * /} 然后就通过JavaScript – 2008-12-24 17:05:01

+0

感谢的Martijn适用myAnchorHoverClass,那是一个很好的建议。我想保留:非JS降级的悬停,以及一些WebKit转换。 – roryf 2008-12-24 17:50:51

0

要确定风格throught JS,你可以使用的className这样做e.g:

item.onmouseover = gohover;

item.onmouseout = nohover;

功能gohover(){this.className = gClass;}

...

0

如果我正确理解你的问题,好像你正在寻找的是一个XPath对于CSS(伪)类。除了使用Ajax获取CSS文件和使用正则表达式搜索外,我还没有意识到从CSS文件中检索样式信息的方法。

3

我相信你有兴趣的styleSheets阵列是documentdocument.styleSheets)这个数组的索引被当前页面引用的样式表的属性,并允许您遍历所有的样式规则中的每个片。用于访问css规则的W3C阵列(Firefox,Opera,Safari)为cssRules,而微软的阵列为rules。下面的代码片段从www.quirksmode.org采取:

 
var theRules = new Array(); 
if (document.styleSheets[1].cssRules) 
    theRules = document.styleSheets 1 .cssRules 
else if (document.styleSheets[1].rules) 
    theRules = document.styleSheets 1 .rules 

现在theRules包含了文档的第二个样式表的规则。请参阅quirksmode的referencecompatibility tables以获取有关从JavaScript访问CSS规则的更多信息。