繁体   English   中英

jquery css(空白)IE7/8错误?

[英]jquery css(white-space) IE7/8 bug?

我们只是花了一些时间在 IE7/8 中追踪一些非常奇怪的 jQuery/css 行为。

我们做一些动画和高度测量。 在制作动画时,我们不希望文本换行。 所以我们这样做了:

$(selector).css("white-space", "nowrap");
... animate ...
$(selector).css("white-space", "inherit");

这适用于 FF、Chrome、Safari、iPad,甚至 IE9,但在 IE7 或 8 上我们会收到 Javascript 错误:

"Could not get the whiteSpace property. Invalid argument"

jQuery 的深处。 经过一番摸索,我们最终这样做了:

首先,在.css中定义一个class:

/* Kludge to avoid IE7/8-jQuery css('white-space') problem? */
.nowrap { white-space: nowrap; }

然后修改上面的animation代码:

$(selector).addClass("nowrap");
... animate ...
$(selector).removeClass("nowrap");

现在每个人都很开心,但这个杂牌真的让我很烦。 jQuery 是否为 IE 做某种 CSS 翻译? 我们使用的是 jQuery 1.4.2。

在这里测试: http://jsfiddle.net/nL48C//http ://fiddle.jshell.net/nL48C/show/light/
在[IE7]兼容模式下,IE7和IE8中存在错误。 它在 IE8 标准模式下运行良好。

注释掉inherit行: http://jsfiddle.net/nL48C/1//http ://fiddle.jshell.net/nL48C/1/show/light/
错误消失了。

我知道 IE7 几乎完全不支持inherit ,所以这就是问题的根源。

但是,如果您尝试使用 jQuery 1.4.4 inherit ,则不会出现错误:
http://jsfiddle.net/nL48C/2/ / http://fiddle.jshell.net/nL48C/2/show/light/

看起来 jQuery 1.4.2 缺少 1.4.4 必须解决此问题的一些魔力。

jQuery 1.4.2

if ( set ) {
    style[ name ] = value;
}

jQuery 1.4.4

// Wrapped to prevent IE from throwing errors when 'invalid' values are provided
// Fixes bug #5509
try {
    style[ name ] = value;
} catch(e) {}

解决方案:

  • 不要设置为inherit ,设置为normal ,也就是初始值

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM