scrollTop в Safari под Mac ОС всегда равен 0
Здравствуйте.
В заголовке темы, собственно, суть проблемы и отражается. Юзается jQuery. Навешивал обработчик события scroll всеми известными способами, толку нет. Навешивал обработчик и на window, и на html, и на body. Адрес сайта, к сожалению, дать пока что не могу поскольку он в разработке. Этот же код великолепно выполняется на другом сайте без каких-либо проблем. Подскажите как лечится эта проблема в Safari? |
Rise, jQuery version 2.1.1
Это вариант на котором я остановился (не работает в Safari). var cont=(!is_win_safari() && is_safari())?'html,body':window; $(cont).on('scroll',function(e){ var $t=$(this),$m=$('.floating_menu'); if($t.width()<960) return; if($m.hasClass('hide')) $m.attr('data-state','hide').show().animate({top:-100},0).hide().removeClass('hide'); if($t.scrollTop()<500) $('.floating_menu[data-state="show"]').attr('data-state','hide') .stop(true).show() .animate({top:-$m.height()},300,function(){$(this).hide();}); else $('.floating_menu[data-state="hide"]').attr('data-state','show') .stop(true).show() .animate({top:0},300); }).scroll(); |
Цитата:
|
Nexus, test.html:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>TEST</title> <script src="https://code.jquery.com/jquery-2.2.1.min.js"></script> </head> <body> <script> $('body').append(new Array(100).join('<br>')); var $window = $(window).on('scroll', function() { console.log($window.scrollTop()); }); </script> </body> </html>Работает это в твоем Safari под Mac ОС? |
Rise, работает.
|
Может подобное произойти из-за стилей страницы?
|
Цитата:
|
рони, к сожалению нет)
Я понимаю, что невнимательность в большинстве случаев и приводит к ошибкам, но вряд ли она имеет в этом случае место быть. В этой теме хотел узнать об особенностях самого браузера Safari, возможно в них причина. Во время поиска решения проблемы видел сообщения, в которых описывали причину бага заключающуюся именно в них. |
Цитата:
|
рони, да подключено.
Консолью умею пользоваться, ошибок нет. |
Скрипт подключался асинхронно через $.getScript.
Оказалось, что window!==window.top. $(window.top).scroll(callback); Вошпем как-то так, может кому пригодиться сей пост. Спасибо всем тем, кто пытался помочь. |
Цитата:
|
Цитата:
|
Nexus,
html проверяли на наличие лишних тегов? |
рони, нет, не проверял.
|
Часовой пояс GMT +3, время: 14:40. |