阅读:使用javascripthover伪类

我创建了一个覆盖页面上某些元素的hover的函数。 它在正常和hover效果之间消失。 因为我必须在我的CSS文件中创建一个.hover类。 我觉得这有点不干净。 我怎么能读到:hover伪类内容?

更新 :我不知怎的错了。 以下示例不起作用。 请参阅@ bfavaretto的评论以获得解释。

在Firefox,Opera和Chrome或任何其他正确实现window.getComputedStyle浏览器中都非常简单。 你只需要传递“hover”作为第二个参数:

        

但我不相信还有一个Internet Explorer的解决方案,除了像Gumbo建议的那样使用document.styleSheets 。 但是会有分歧。 因此,到目前为止,拥有.hover类是最佳解决方案。 根本不是不洁净的。

使用getComputedStyle作为接受的答案将不起作用,因为:

  1. 悬浮状态的计算样式仅在元素实际处于该状态时可用。
  2. getComputedStyle的第二个参数应为空或伪元素。 它不适用于:hover因为它是一个伪类。

这是一个替代解决方案:

 function getCssPropertyForRule(rule, prop) { var sheets = document.styleSheets; var slen = sheets.length; for(var i=0; i 

演示

您可以访问document.styleSheets并查找应用于该特定元素的规则。 但这并不比使用简单的附加类更清洁。

如果这里有任何人使用接受回答的问题但是它不起作用,这里有一个很好的function:

 function getPseudoStyle(id, style) { var all = document.getElementsByTagName("*"); for (var i=0, max=all.length; i < max; i++) { var targetrule = ""; if (all[i].id === id) { if(all[i].selectorText.toLowerCase()== id + ":" + style) { //example. find "a:hover" rule targetrule=myrules[i] } } return targetrule; } }