2010-11-11 21 views
1

我想在JavaScript中構建模態對話框。我已經在Firefox的工作,但不能與一些像這樣的代碼,即...從頭開始構建模式對話框,用於IE和Firefox的JavaScript

$(window).bind('scroll resize', function (e) { 

    var $this = $('.popup'); 

    var d = document; 
    var rootElm = (d.documentelement && d.compatMode == 'CSS1Compat') ? d.documentelement : d.body; 
    var vpw = self.innerWidth ? self.innerWidth : rootElm.clientWidth; // viewport width 
    var vph = self.innerHeight ? self.innerHeight : rootElm.clientHeight; // viewport height 

    $this.css({ 
     position: 'fixed', 
     left: ((vpw - 100)/2) + 'px', 
     top: (rootElm.scrollTop + (vph - 100)/2) + 'px' 
    }).show(); 

}); 

這工作完全在Firefox,而不是在IE(不針對IE6)

的問題

在IE中初始放置很好,但是當我去調整大小時,div不會移回到視圖端口的中間位置。我驗證了調整大小和滾動都觸發了,但放置在IE中。

DEMO

http://jsfiddle.net/LpuDh/

+3

爲什麼您需要從頭開始構建?你使用的jQuery和jQuery UI已經有了一個模態對話框,可以添加到你的項目中? – 2010-11-11 19:20:13

+0

那麼,什麼是不正確的/不受歡迎的IE行爲? – 2010-11-11 19:20:43

+0

@john - jquery ui非常具有侵入性。 @surreal - 調整大小不會將圖像垂直移動到正確的位置。 – 2010-11-11 19:57:35

回答

1

的問題是視口的高度和寬度...使用jQuery的東西,它工作正常。

$(window).bind('scroll resize', function (e) { 

     var $this = $('.popup'); 

     var d = document; 
     var rootElm = (d.documentelement && d.compatMode == 'CSS1Compat') ? d.documentelement : d.body; 
     var vpw = $(window).width(); // viewport width 
     var vph = $(window).height(); // viewport height 

     $this.css({ 
      position: 'fixed', 
      left: ((vpw - 100)/2) + 'px', 
      top: (rootElm.scrollTop + (vph - 100)/2) + 'px' 
     }).show(); 

    });