【问题标题】:jQuery losing styles on $(html_with_inline_styles)jQuery 在 $(html_with_inline_styles) 上丢失样式
【发布时间】:2011-02-10 22:06:09
【问题描述】:

在 Firefox 3.6(Firebug 控制台)中,做

$('<div style="-x-foo:bar;color:red;" />').attr("style")

结果

"color: red;"

为什么会丢失无法识别的样式规则?

【问题讨论】:

    标签: jquery html css firefox inline-styles


    【解决方案1】:

    jQuery 将创建一个新的 DOM 元素。 Firefox 将解析该元素的 style 属性并忽略它不理解的任何内容。

    值得注意的是,Chrome 不会删除这样的属性。

    尝试this link 在不同的浏览器中测试此行为 - 感谢ILMV

    【讨论】:

    • 对我来说很有意义,在 Chrome (jsFiddle) 中尝试过这个»jsfiddle.net/Ilmv/He7Ta
    • @ILMV jsfiddle 目前没有为我加载。你是说它做同样的事情吗?如果我执行 Ctrl-Shift-j 并在上面运行该行,我会得到 Chrome 中包含的 -x-foo 属性。
    • @ILMV 在我的浏览器(Chrome 9)中,-x-foo 会用你的小提琴发出警报。
    • 对不起,我在 Chrome 中得到的结果与你相同,但在 FF 中只得到一个属性。 :-)
    【解决方案2】:

    对于浏览器应该如何处理无法识别的规则,没有定义的操作。一些浏览器可能会将它们添加到 DOM 中但忽略它们,其他浏览器可能会完全删除它们。

    Firefox 是放弃未知规则的其中之一。

    您在其他浏览器中可能会得到不同的结果。关键是它是未定义的,因此很难预测会发生什么,即使是在同一浏览器的不同版本之间。

    我想真正的问题是:您要指定的无法识别的规则是什么?您显然在这里尝试做某种聪明的把戏,我怀疑您对这个问题的答案是否会是您正在寻找的答案,以便让您的聪明把戏发挥作用。或许,如果您描述了您试图通过这条未知规则实现的目标,我们可以帮助您找到实现目标的方法,尤其是在您目前的计划似乎不太可能实现的情况下。

    【讨论】:

    • 请注意,Firefox 4 不会立即删除未知样式,但如果您随后通过 CSSOM 修改样式,那么它会。
    【解决方案3】:

    浏览器在创建节点并设置属性值时丢弃它无法识别的属性。

    当您获得浏览器在内存中所保存内容的序列化时,它们不再存在。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-30
      • 2014-03-30
      • 2014-04-25
      • 2016-04-19
      • 1970-01-01
      相关资源
      最近更新 更多