2
我想确定浏览器的实际高度与jQuery屏幕高度的关系。出于某种原因,读数远不准确,我想知道为什么。jQuery浏览器高度不准确
基本上我遇到的问题是,
- 的
window.innerHeight
和window.outerHeight
总是即使正在显示的标签栏完全相同的并且在2之间的显着性(视觉)差.. - 上面的每个读数都是总是小于
screen.height
和screen.availHeight
。我的印象是,这不应该是这种情况,如果浏览器是最大化VS全屏VS大小vs最小化?
我的要求是当元素到达浏览器视口的顶部时,更改window.scroll
事件上元素的类。不过,如果浏览器窗口的大小不是最大化或全屏,我还需要更改为其他类。
下面是执行此操作的代码,但是,就像我上面提到的那样,“最大化”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);
}
});
});
}
不知道你的意思在第二点,你是否期望最大化/全屏浏览器窗口比实际的屏幕尺寸更大......? – CBroe
_“我的要求是当window.scroll事件到达屏幕顶部时,改变一个元素的类。” - 如果我的浏览器窗口_itself_甚至不触及顶部屏幕边框。 – CBroe
您正在使用哪种浏览器?我刚刚在Google Chrome控制台中尝试了'window.innerHeight'和'window.outerHeight',它们都不同。 –