Ответ 1
Посмотрите на свой код HTML-кода.
Первая строка должна быть <!DOCTYPE html>
, и вместо этого вы используете тег <style>
.
Итак, кажется, что ваш документ запущен в режиме Quirks, и jQuery не может рассчитать правильные размеры окна.
У меня есть страница, в которой мне нужно динамически загружать содержимое ajax, когда пользователь прокручивается вниз. Проблема в том, что JQuery не возвращает правильную высоту окна. Я использовал эту функцию раньше и никогда не видел ее сбой, но по какой-то причине она вернет то же значение, что и высота документа. У меня есть тестовая страница здесь: bangstyle.com/test-images
Я закодировал предупреждение для отображения при загрузке страницы, а также каждый раз, когда пользователь прокручивает 500 пикселей ниже:
function scroller() {
if($(window).scrollTop() > 500){
delay(function(){ //200ms wait
pagecounter++;
sideshow();
alert("window height: " + $(window).height() + " scrolltop: " + $(window).scrollTop() + " document height: " + $(document).height());
return false;
}, 200 );
}
}
Я пробовал опубликовать это раньше, но я удалил его, так как я не получил решение. Я надеюсь, что можно опубликовать ссылку на мою тестовую страницу. BTW Я тестировал это на Mac Safari и Mac FF. Я запустил этот же код на других страницах, и он отлично работает. Я чувствую, что в доме этой страницы должно быть что-то, что заставляет JS терпеть неудачу, но не знаю, что бы это было.
Посмотрите на свой код HTML-кода.
Первая строка должна быть <!DOCTYPE html>
, и вместо этого вы используете тег <style>
.
Итак, кажется, что ваш документ запущен в режиме Quirks, и jQuery не может рассчитать правильные размеры окна.
//works in chrome
$(window).bind('scroll', function(ev){
//get the viewport height. i.e. this is the viewable browser window height
var clientHeight = document.body.clientHeight,
//height of the window/document. $(window).height() and $(document).height() also return this value.
windowHeight = $(this).outerHeight(),
//current top position of the window scroll. Seems this *only* works when bound inside of a scoll event.
scrollY = $(this).scrollTop();
if( windowHeight - clientHeight === scrollY ){
console.log('bottom');
}
});
У меня была та же проблема. Я нашел некоторые вещи:
1) проблема возникает, когда вы пытаетесь получить фактическую высоту до того, как документ будет завершен; 2) проблема возникает в Google Chrome, когда вы не используете кортеж DOCTYPE (упомянутый выше) 3) это всегда происходит в google chrome даже после того, как документ отображается полностью.
Для google chrome я нашел обходное решение здесь: get-document-height-cross-browser Я использую это решение только для google chrome, и он решил мою проблему, я ожидаю, что это поможет кому-то, у кого еще есть проблема.
Это старый вопрос, но я недавно боролся с тем, что не получил правильную высоту окна в IE10 на несколько пикселей.
Я обнаружил, что IE10 применяет 75% масштабирование по умолчанию и закручивает измерения окна и документа.
Итак, если у вас неправильная ширина или высота, убедитесь, что значение масштабирования установлено на 100%.
Некоторые оглядывались и наткнулись на это, не знаю, помогает ли это, но стоит подняться.
Так как jquery (и dom в целом) не правильно вычисляет размеры в quirksmode, два решения:
Надеюсь, что это поможет.
Я переместил свои сценарии с нижнего колонтитула и решил это для меня.