![](/img/trans.png)
[英]jQuery jscrollpane vertical with white-space:nowrap CSS prop
[英]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.