Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过Javascript访问元素的focus/hover/visited CSS属性?_Javascript_Jquery_Css_Css Selectors_Pseudo Class - Fatal编程技术网

如何通过Javascript访问元素的focus/hover/visited CSS属性?

如何通过Javascript访问元素的focus/hover/visited CSS属性?,javascript,jquery,css,css-selectors,pseudo-class,Javascript,Jquery,Css,Css Selectors,Pseudo Class,我现在可能很累,思维也很奇怪,但我根本找不到如何检索在元素的聚焦、悬停或访问状态中定义的CSS属性值。目标是使用Javascript中的值 重要提示:我不需要获取聚焦/悬停/访问的元素。我想访问DOM中任何元素的某些值,这些值具有为以下状态定义的CSS属性::focus,:hover和:visted 在这种情况下,这些伪类似乎没有帮助,所以我需要触发相应的状态才能访问这些值吗 它应该比这更简单。。。还是不是 附言:用素食Javascript或jQuery回答就可以了。是的,你可以通过阅读样式表来

我现在可能很累,思维也很奇怪,但我根本找不到如何检索在元素的聚焦、悬停或访问状态中定义的CSS属性值。目标是使用Javascript中的值

重要提示:我不需要获取聚焦/悬停/访问的元素。我想访问DOM中任何元素的某些值,这些值具有为以下状态定义的CSS属性
:focus
:hover
:visted

在这种情况下,这些伪类似乎没有帮助,所以我需要触发相应的状态才能访问这些值吗

它应该比这更简单。。。还是不是


附言:用素食Javascript或jQuery回答就可以了。

是的,你可以通过阅读样式表来实现这一点。 您可以使用document.styleSheets获得它;下面是示例和JSFIDLE链接

出于安全原因,Opera和Mozilla将不允许您访问 cssRules从另一个域或 协议试图访问它将引发安全冲突 错误

函数getStyleBySelector(选择器)
{
var sheetList=document.styleSheets;
var规则列表;
varⅠ,j;
/*按与此相反的顺序查看样式表
它们出现在文档中*/
对于(i=sheetList.length-1;i>=0;i--)
{
ruleList=sheetList[i].cssRules;

对于(j=0;j0),您可能需要解析样式表本身才能获得这些值。您最终想要实现什么?可能有更好的方法可以采用。谢谢@Blazemonger,我害怕“穿越怪物”可能性…我的目标是将某些值转换成Javascript,以便在相同或其他元素中重用它们,一个基本示例是在触发某个事件后反转元素状态的颜色。可能还有其他方法可以做到这一点。或者使用可以使用Javascript轻松添加或删除的实用程序类,或者up“素食Javascript或jQuery中的答案就可以了。”那么素食Javascript呢?(免责声明:不是真正的素食主义者)可能会解决您的用例。这确实是一个很好的尝试,它符合Blazemonger的建议(解析样式表).我原以为它会更复杂,不过看起来性能还是有点差。谢谢你,阿米特。
function getStyleBySelector( selector )
   {
       var sheetList = document.styleSheets;
       var ruleList;
       var i, j;

       /* look through stylesheets in reverse order that
          they appear in the document */
       for (i=sheetList.length-1; i >= 0; i--)
       {
           ruleList = sheetList[i].cssRules;
           for (j=0; j<ruleList.length; j++)
           {
               if (ruleList[j].type == CSSRule.STYLE_RULE && 
                   ruleList[j].selectorText == selector)
               {
                   return ruleList[j].style;
               }   
           }
       }
       return null;
   }

console.log(getStyleBySelector('a:hover').color);
console.log(getStyleBySelector('#link:hover').color);