2010-12-15 69 views
0

我已經有了一些代碼來最大化頁面加載/調整大小的視頻面板。我使用的是JQuery 1.4.4,在Chrome,Firefox和Safari中一切都很好。繼其他一些帖子的一些例子之後,我根據屏幕上其他元素的渲染大小和樣式調整視頻面板大小。在IE中處理JQuery/CSS錯誤

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。有沒有更好的方法來解釋其他元素的渲染寬度?
如果不是,捕捉這些錯誤的最佳方法是什麼?

謝謝!

+0

$ ALL_CAPS標誌着一個jQuery對象

$NAV.css('height',play_height-16+"px"); 

可以改寫在此功能之外定義。 resize(w,h)函數具有內部邏輯來處理視頻div的大小調整以及放置視頻控制元素,歷史記錄等。AFAIK僅限於CSS的解決方案是不可能的。 – RSG 2010-12-15 02:48:32

回答

1

對於你的情況,我想你應該看看outerWidth函數而不是width。使用outerWidth(true),我們可以獲得元素的寬度,包括其邊框,填充和邊距。因此,您可以替換此行:

var play_width = $PLAY.width() - $NAV.width(); 

與此:

var play_width = $PLAY.width() - $NAV.outerWidth(true); 

,因此接下來的三行的計算完全消除。


此外,heightwidth功能不只是吸氣,同時也設定裝置,所以這行:爲

$NAV.height(play_height - 16); 
+0

在所有瀏覽器中工作完美。感謝指針。 – RSG 2010-12-15 09:07:07