【问题标题】:How can I get the value of a CSS property that the browser does not support?如何获取浏览器不支持的 CSS 属性的值?
【发布时间】:2012-06-28 08:12:08
【问题描述】:

所以我正在寻找浏览器不支持的 CSS 属性的值。这是我想用来创建 polyfill 的东西,但我需要在任何给定时间知道属性的值。

Here's a test file with all the methods I've tried so far。基本上,鉴于以下情况:

#element {
    transform: rotate(2deg);
}

我希望能够通过 JavaScript 获取值 rotate(2deg),无论浏览器是否支持它。 这可能吗?如果是这样,是否有一种预先的方法来做到这一点(我需要在旧浏览器中做很多事情)?

如果可能的话,一些偏好:

  • 宁愿从一个元素中执行此操作,而不是循环遍历样式表的规则
  • 至少需要支持 IE 7(或有方法支持)
  • 不应花费 2 秒来计算。我想要一些表现得体的东西

【问题讨论】:

  • 此问题可能重复:stackoverflow.com/q/249991/527096
  • 如果浏览器不支持该属性,除了在样式表中搜索之外,我看不出你还能如何找到它的值(这并不难而且相当快)。您可以通过元素的样式属性直接应用规则,但我怀疑您不想这样做。
  • @RobG 在样式表中搜索的主要问题是值可能会改变,这是一项昂贵的操作。我希望能够在触发 :hover 之类的东西时调整值,而无需每次都解析文件。
  • 这里的脚本可以做到这一点code.google.com/p/ie7-js 这个脚本用于使旧浏览器像新浏览器一样工作。但似乎没有变化。也许你可以添加它。或者从它的工作原理中学习。
  • 我使用我找到的另一个链接中的内容编辑了您的 jsFiddle。我可以让它在 IE 8 中读取转换。但是 FF3 返回空白,Chrome 返回 null...这可能是一个开始...

标签: javascript css cssom


【解决方案1】:

我能够在 Firefox 中使用 jQuery 检索演示中的值:

var match = $( 'style' ).html().match( /transform:\s*(.+);?/ );
var value = match ? match[1] : '';

现场演示: http://jsfiddle.net/fnF2V/5/

【讨论】:

  • 当然,除非只有一个 transform 声明保证属于 #element,否则这不会很有用。
  • @BoltClock 这是一个开始:) 线程中接受的答案可能是重复的,指出根本不可能。我回答的目的是表明它可能的。
猜你喜欢
  • 2011-08-28
  • 1970-01-01
  • 2010-11-23
  • 2010-10-27
  • 1970-01-01
  • 2016-07-11
  • 1970-01-01
  • 2013-07-01
相关资源
最近更新 更多