请参考这个fiddle,它展示了问题。
我尝试通过
它可能不适用于旧版IE,但我没有测试过那些版本。我似乎找不到任何关于特别是近期版本的IE中此功能无法使用的参考。实际上,微软的文档让我相信,它应该可以工作,但事实并非如此(“设置或检索样式规则的持久化表示形式”)。我正在进行一些简单的调试,看看是否有什么明显的错误,或者可能是我用来测试IE代码的VM映像。我做错了什么?谢谢!
编辑:我具体要找的是一种获取应用于元素的当前样式列表的方法,就像在Chrome中通过从
我尝试通过
window.getComputedStyle(element)
(返回CSSStyleDeclaration对象)来获取<div>
的cssText
属性。在Chrome中(版本直接从存储库中获取),这很好用,但在Firefox和IE10及IE11中无效。实际上,cssText
是返回对象上的属性,只是一个空字符串。它可能不适用于旧版IE,但我没有测试过那些版本。我似乎找不到任何关于特别是近期版本的IE中此功能无法使用的参考。实际上,微软的文档让我相信,它应该可以工作,但事实并非如此(“设置或检索样式规则的持久化表示形式”)。我正在进行一些简单的调试,看看是否有什么明显的错误,或者可能是我用来测试IE代码的VM映像。我做错了什么?谢谢!
编辑:我具体要找的是一种获取应用于元素的当前样式列表的方法,就像在Chrome中通过从
window.getComputedStyle(element)
返回的对象获取cssText
时发生的那样,但是在Firefox或IE中不会发生。请澄清,似乎在IE中使用style.cssText
属性检索应用于元素的样式列表,包括通过样式表、样式标签和内联样式规则应用的样式,但不包括通过脚本编程应用的样式。这可能是设计意图和预期的,但是:如何在Internet Explorer和Firefox中复制使用Chrome中的CSSStyleDeclaration对象(由window.getComputedStyle()
返回)的cssText
时看到的行为?
getComputedStyle()
返回的CSSStyleDeclaration
对象的cssText
属性仅提供由样式表和样式标签应用的样式,而不包括例如更改元素样式的脚本?我可以接受这个。但是,当尝试检索应用于元素的当前样式时,使用element.style.cssText
不会给我任何实际数据(即它仍然是一个空字符串)。如何在 IE 中复制此期望的行为,即获取包含所有当前应用的样式的字符串,无论其来源如何? - L0j1kgetComputedStyle()
是正确的,那么 IE 应该在我在问题中链接的 fiddle 中的fooText
div 内放置一些东西,但事实并非如此。cssText
属性不包含任何数据,包括通过样式表应用的样式,除非我对 JSFiddle 包含样式的方式有误解。 - L0j1kcssText
(就像IE上的CSSStyleDeclaration对象一样,它是一个空字符串)。真是一团糟。在过去的两天里,我想起了为什么离开了Web开发转向后端。看来迭代属性是唯一跨浏览器获取元素实际当前样式列表的方法。趁这个机会,@JonathanSampson,感谢您为使IE与其他浏览器兼容所做的任何努力。IE10和11比旧版本领先了几个世纪。 :) - L0j1k