Javascript 如何获得浏览器不解释的css样式表值?

Javascript 如何获得浏览器不解释的css样式表值?,javascript,html,css,Javascript,Html,Css,我想获得css样式表的一个值,它在渲染期间实际上没有被浏览器使用 例如: .blur { data : "Great"; } 假设我在div上使用这个类: <div class = "blur"></div> 编辑:对不起,我之前没有提到这一点,现在似乎引起了一些混乱。但是请看这个 正如我在下面的评论中所说的,我想强调的是,我已经提出了在Internet Explorer上生成一些文本阴影的算法——虽然不是最好的算法,但仍然可以做到这一点。但是,我正在尝试

我想获得css样式表的一个值,它在渲染期间实际上没有被浏览器使用

例如:

.blur {    
  data : "Great";
}
假设我在div上使用这个类:

<div class = "blur"></div>
编辑:对不起,我之前没有提到这一点,现在似乎引起了一些混乱。但是请看这个


正如我在下面的评论中所说的,我想强调的是,我已经提出了在Internet Explorer上生成一些文本阴影的算法——虽然不是最好的算法,但仍然可以做到这一点。但是,我正在尝试访问某个元素的文本阴影属性,但是我无法访问,因为Internet Explorer没有存储它,因为它在一开始并没有真正呈现它,所以我需要访问样式表数据。因此,我再次提出的问题是访问“数据”,它也不像IE8、IE9的textShadow那样存储。

我不确定浏览器是否有义务保留它不理解的属性。您可以尝试使用此代码,如下所示。然而,正如其他人所指出的,这可能不是CSS的最佳使用,即使它碰巧起作用。

您可以将数据存储在HTML5数据属性中

<div class="blur" data-foo="great"></div>

您可以对样式表标记进行原始访问,这是您所能做的最好的事情,然后您可以使用类似于

这看起来像一个大的黑客,但我还不能想出一个更优雅的方法来做你需要的事情。更好的方法是使用IE的过滤器,而不是我认为你自己尝试解决这个问题的方法将花费比它值得的更多的努力,你将逆潮流而行,与其他代码产生摩擦

.myclass {    
  text-shadow: 2px 2px gray;
  filter: progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray')
}

不清楚您在问什么,请解释您为什么想要这个。在我看来这毫无意义,样式表应该控制外观,而不是作为存储数据的地方。你永远不应该在CSS中存储数据!也许有一种更好的方法可以用HTML来实现这一点。一个例子是@JuanMendes:我已经在InternetExplorer上制作了生成一些文本阴影的算法——虽然不是最好的算法,但仍然可以做到这一点。但是,我正在尝试访问某个元素的文本阴影属性,但是我无法访问,因为Internet Explorer没有存储它,因为它在一开始并没有真正呈现它,所以我需要访问样式表数据。所以我问的问题是再次访问“数据”,它也不是像IE8的textShadow那样存储的,IE9也可以将其存储在JS对象中,无需污染HTML@JuanMendes数据属性用于按元素存储数据。只有当你想在每个文档的基础上存储数据时,散列才是好的。他并不是真的想存储任意数据,他试图访问浏览器忽略的样式表属性,因为它不支持这些属性。@JuanMendes:这不是在需要文本阴影时添加数据属性的最有效方法,不过,如果你能从当前div的类中读取它,效率会更高。有关更多信息,请阅读我的编辑if。在OP的问题中,数据不是存储在每个元素中,而是存储在CSS中,我建议将这些信息放入JS对象中,以便OP可以对其执行任何操作。@JuanMendes:你的意思是,我无法直接访问样式表,也无法通过它进行解析。谢谢。没有其他方法吗?对这看起来确实很麻烦。@bluejamesbond首先你问我原始数据(在Dark Falson的回答中),这样你就可以解析它了,现在你想要另一种方式吗?你是黑客,这将是一个麻烦,每个人都反对它,我只是给你绳子。。。这是你唯一可以自缢的答案:)@bluejamesbond——你可以试着看看为JavaScript编写的CSS解析器。这里有一个链接,指向一个名为@KevinM-Nice的链接,它似乎也接受无法识别的属性。@bluejamesbond您可以使用IE的过滤器,以较少的黑客攻击来解决文本阴影问题。请参阅我答案的更新
$('.blur').data('foo');
// You'd have to find the right style tag
document.getElementsByTagName("style")[0].innerText
// outputs  a string like:   .blur {      color: red;  data : "Great";}  
.myclass {    
  text-shadow: 2px 2px gray;
  filter: progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray')
}