鬼問題探討 - IE元件width 100%超出body

很不幸的,這是IE6/7/8的bug,原因是IE6/7/8的width:100%並沒有把scroll的寬度計算進去.
如果要避免這個問題造成顯示上的困擾,這邊提出幾個參考方案,但是我覺得都不算是很好的解法:
  1. 固定顯示y軸的scroll且不允許x軸的scroll顯示,並且margin-right:20px避免使用到scroll右側的空間.
  2. width:100%改由計算方式取得body寬度之後在-20px,但是用此方法會造成browser resize時候需重新計算的負擔.

原本使用<div style='width:100%'>內容</div>的情況很正常:

以javascript:window.showModalDialog開啟該視窗時,width100%會超過螢幕而出現scroll:

修正後開啟該視窗的情況:


我是透過javascript在前端page判斷是否showModalDialog來決定是否修正,修正語法如下:
if (window.dialogArguments != null) {
    if ($.browser.msie == true) {
        $('body').css('overflow-y', 'auto');
        $('body').css('overflow-x', 'hidden');
        $('.working-content,.loading-content').css('margin-right', '20px');
    }
}
以window.showModalDialog語法開啟視窗時,記得要把window傳過去,以方便判斷目前是Dialog狀態:
return window.showModalDialog(url, window, parm);

沒有留言:

橫式廣告