我无法在 IE7 上获取 window.innerHeight。如何修复?

发布于 2025-01-06 20:56:40 字数 131 浏览 0 评论 0原文

我可以在 Chrome 上获取 window.innerHeight

1、如何通过纯JS在IE7上获取该属性?

2、如何通过jQuery在IE7上获取该属性?

谢谢你!

I can get window.innerHeight on Chrome.

1, How to get this property on IE7 via pure JS?

2, How to get this property on IE7 via jQuery?

Thank you!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

生生漫 2025-01-13 20:56:40
  1. 纯JS很难;所以你需要一个脚本:

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

  2. 另一方面,jQuery 只需键入以下内容即可简单:

    $(窗口).height();
    

现场演示的 JS Fiddle 链接

注意: 窗口大小为 JS Fiddle 中结果部分的大小

更新 1

我发现了一个脚本,可以从 JQuery Dimensions 应该有一个返回滚动条大小的方法

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)];
};

剩下的唯一问题是 总是添加滚动条宽度&高度到尺寸,无论是否有滚动条。解决此问题的一种解决方案是检测网页中何时存在溢出以及在什么维度(垂直或水平)。

  1. Pure JS is difficult; so you'll need a script for that:

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

  2. jQuery on the other hand, is as simple as typing this:

    $(window).height();
    

JS Fiddle link for a live demo

Note: The window size is the size of the result section in JS Fiddle.

Update 1

I found a script that finds the scrollbar size from 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)];
};

The only problem left is it always adds the scrollbar width & height to the dimensions, regardless if there is a scrollbar or not. One solution to fix this problem is to detect when there is overflow in a web page, and at what dimension (vertical or horizontal).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文