Javascript 在IE中处理JQuery/CSS错误
我有一些代码可以在页面加载/调整大小时最大化视频面板。我正在使用jQuery1.4.4,在Chrome、Firefox和Safari中一切都很好。根据其他文章中的一些示例,我根据屏幕上其他元素的渲染大小和样式调整视频面板的大小Javascript 在IE中处理JQuery/CSS错误,javascript,jquery,css,internet-explorer,width,Javascript,Jquery,Css,Internet Explorer,Width,我有一些代码可以在页面加载/调整大小时最大化视频面板。我正在使用jQuery1.4.4,在Chrome、Firefox和Safari中一切都很好。根据其他文章中的一些示例,我根据屏幕上其他元素的渲染大小和样式调整视频面板的大小 function maximizeVideo(){ var play_height = $(window).height()-42; var play_width = $PLAY.width() - $NAV.width(); play_width -= p
function maximizeVideo(){
var play_height = $(window).height()-42;
var play_width = $PLAY.width() - $NAV.width();
play_width -= parseInt($NAV.css("paddingLeft"), 10) + parseInt($NAV.css("paddingRight"), 10);
play_width -= parseInt($NAV.css("marginLeft"), 10) + parseInt($NAV.css("marginRight"), 10);
play_width -= parseInt($NAV.css("borderLeftWidth"), 10) + parseInt($NAV.css("borderRightWidth"), 10);
$NAV.css('height',play_height-16+"px");
$VIDEO_PANEL.resize(play_width, play_height);
}
在IE中,css访问器有时返回NaN。是否有更好的方法来计算其他元素的渲染宽度?如果没有,捕获这些错误的最佳方法是什么
谢谢 对于您的情况,我认为您应该查看函数,而不是
width
。使用outerWidth(true)
,我们可以获得元素的宽度,包括其边框、填充和边距。因此,您可以替换此行:
var play_width = $PLAY.width() - $NAV.width();
$NAV.css('height',play_height-16+"px");
为此:
var play_width = $PLAY.width() - $NAV.outerWidth(true);
从而完全消除了接下来的三行计算
此外,
height
和width
函数不仅是getter,而且是setter,因此此行:
var play_width = $PLAY.width() - $NAV.width();
$NAV.css('height',play_height-16+"px");
可以重写为
$NAV.height(play_height - 16);
$ALL_CAPS表示在此函数外部定义的jQuery对象。resize(w,h)函数具有处理调整视频div大小和放置视频控制元素、历史记录等的内部逻辑。AFAIK纯CSS解决方案是不可能的。