Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery浏览器高度不准确_Javascript_Jquery_Html - Fatal编程技术网

Javascript jQuery浏览器高度不准确

Javascript jQuery浏览器高度不准确,javascript,jquery,html,Javascript,Jquery,Html,我试图确定浏览器的实际高度与jQuery中的屏幕高度的关系。由于某些原因,读数远不准确,我想知道原因 基本上我遇到的问题是 窗口.innerHeight和窗口.outerHeight始终完全相同,即使显示了选项卡栏,并且两个窗口之间存在明显的(视觉)差异 上面的每个读数总是小于屏幕高度和可用高度。我的印象是,如果浏览器最大化、全屏、大小和最小化,情况就不应该如此 我的要求是在窗口中更改元素的类别。当该元素到达浏览器视口顶部时,滚动事件。但是,如果浏览器窗口的大小不是最大化或全屏,我也必须更改为不

我试图确定浏览器的实际高度与jQuery中的屏幕高度的关系。由于某些原因,读数远不准确,我想知道原因

基本上我遇到的问题是

  • 窗口.innerHeight
    窗口.outerHeight
    始终完全相同,即使显示了选项卡栏,并且两个窗口之间存在明显的(视觉)差异
  • 上面的每个读数总是小于屏幕高度和可用高度。我的印象是,如果浏览器最大化、全屏、大小和最小化,情况就不应该如此
  • 我的要求是在
    窗口中更改元素的类别。当该元素到达浏览器视口顶部时,滚动
    事件。但是,如果浏览器窗口的大小不是最大化或全屏,我也必须更改为不同的类

    下面是执行此操作的代码,但是,正如我上面提到的,“maximized”if语句从来都不是真的。。。为什么?

    function SetFloatingDivCheck(ContainerName, StartingClassName, FixedClassNameSized, FixedClassNameMaximized) {
    $(document).ready(function () {
        var ElemY = $('#' + ContainerName).offset().top - parseFloat($('#' + ContainerName).css('margin-top').replace(/auto/, 0));
        $(window).scroll(function () {
            var YPosition = $(window).scrollTop();
    
            if (YPosition >= ElemY) {
                $('#' + ContainerName).removeClass(StartingClassName);
                //the following alert/debug shows this: 1050, 949, 949, 1010 when fired.
                //alert("screen.height = " + screen.height.toString() + "\nwindow.innerHeight = " + window.innerHeight.toString() + "\nwindow.outerHeight = " + window.innerHeight.toString() + "\n screen.availHeight = " + screen.availHeight.toString());
    
                if (screen.height == window.outerHeight || screen.availHeight == window.outerHeight)
                {
    
                    $('#' + ContainerName).addClass(FixedClassNameMaximized);
                }
                else
                {
                    $('#' + ContainerName).addClass(FixedClassNameSized);
                }
            }
            else {
                $('#' + ContainerName).removeClass(FixedClassNameSized);
                $('#' + ContainerName).removeClass(FixedClassNameMaximized);
                $('#' + ContainerName).addClass(StartingClassName);
            }
        });
    
    });
    }
    

    你的测试被窃听了。您的警报状态为
    window.outerHeight=“+window.innerHeight.toString()

    您正在使用哪个浏览器?我刚刚在Google Chrome控制台中尝试了
    window.innerHeight
    window.outerHeight
    ,它们都不同。我使用的是
    42.0.2311.90M
    版本,您呢?如果“标签栏”“是浏览器顶部的一部分,它在
    内部高度
    外部高度
    之间没有区别,区别在于边框和边距等。
    屏幕
    是实际屏幕,不管浏览器大小。@MaxOvrdrv您的测试有错误。”。您的警报状态为
    window.outerHeight=“+window.innerHeight.toString()
    。是否看到问题?;)@adeneo请在控制台中尝试
    window.outerHeight