我无法在IE7上获得window.innerHeight。怎么修?

时间:2012-02-17 07:43:01

标签: javascript internet-explorer dom internet-explorer-7

我可以在Chrome上获得window.innerHeight

1,如何通过纯JS在IE7上获取此属性?

2,如何通过jQuery在IE7上获取此属性?

谢谢!

1 个答案:

答案 0 :(得分:3)

  1. 纯JS很难;所以你需要一个脚本:

    http://andylangton.co.uk/articles/javascript/get-viewport-size-javascript/

  2. 另一方面,
  3. jQuery就像打字一样简单:

    $(window).height();
    

  4. JS Fiddle link for a live demo

    注意:在JS Fiddle中,窗口大小是结果部分的大小。


    更新1

    我找到了一个脚本,可以从JQuery Dimensions should have a method to return the scrollbar size找到滚动条大小:

    jQuery.getScrollBarSize = function() {
       var inner = $('<p></p>').css({
          'width':'100%',
          'height':'100%'
       });
       var outer = $('<div></div>').css({
          'position':'absolute',
          'width':'100px',
          'height':'100px',
          'top':'0',
          'left':'0',
          'visibility':'hidden',
          'overflow':'hidden'
       }).append(inner);
    
       $(document.body).append(outer);
    
       var w1 = inner.width(), h1 = inner.height();
       outer.css('overflow','scroll');
       var w2 = inner.width(), h2 = inner.height();
       if (w1 == w2 && outer[0].clientWidth) {
          w2 = outer[0].clientWidth;
       }
       if (h1 == h2 && outer[0].clientHeight) {
          h2 = outer[0].clientHeight;
       }
    
       outer.detach();
    
       return [(w1 - w2),(h1 - h2)];
    };
    

    唯一的问题是always adds the scrollbar width & height to the dimensions,无论是否有滚动条。解决此问题的一种解决方案是检测网页何时出现溢出以及何种维度(垂直或水平)。