如何通过Javascript访问元素的focus/hover/visited CSS属性?
我现在可能很累,思维也很奇怪,但我根本找不到如何检索在元素的聚焦、悬停或访问状态中定义的CSS属性值。目标是使用Javascript中的值 重要提示:我不需要获取聚焦/悬停/访问的元素。我想访问DOM中任何元素的某些值,这些值具有为以下状态定义的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回答就可以了。是的,你可以通过阅读样式表来
: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);