У меня тоже была эта проблема.Это то, что я использую, и это работает.Это не браузер, но для меня это не очень хороший код.Пока все работает.
Вызов scrollTop для html-элемента в Opera 11 / IE 8 / FF 3.6 возвращает число больше нуля
Вызов scrollTop для html-элемента в Chrome 10 / Flock 3.5/ Safari 5 (для Windows) возвращает 0
Так что просто проверьте, что:
Если браузер Opera, вы проверяете число больше 0 в scrollTop и вызываете scrollTop только для html,а-ля
</p>
<p>var html = document.getElementsByTagName('html')[0];</p>
<p>var body = document.getElementsByTagName('body')[0];</p>
<p>$(html).animate({scrollTop:0+'px'},{'duration':1000,'easing':'swing'});</p>
<p>
Если браузер Chrome, Flock или Safari, то scrollTop вернет 0, и вы проверите это, действуя соответственно:
</p>
<p>$(html,body).animate({scrollTop:0+'px'},{'duration':1000,'easing':'swing'});</p>
<p>
Итак, вы установите эффект html для стандартных режимов FF и IE (причуды тоже должны быть рассмотрены. Тьфу), а тело для Chrome и Safari.
В Opera, котораяпытается прокрутить как html, так и body, что приводит к массовой причуде, scrollTop возвращает число больше 0, поэтому вы вызываете только html, и вы не получаете мерзкую чепуху.
Таким образом, вы можете безопасно использовать оба htmlи тело, когда это необходимо, или просто HTML, когдабраузер - Opera.
И не забывайте, что вы используете protectDefault (), иначе это будет еще одна странная вспышка, о которой вам придется беспокоиться.;)
Эй, я не JS-ниндзя, но я очень стараюсь, и это работает для меня, и у меня сейчас нет времени, чтобы исследовать это столько, сколько я хотел бы, поэтому я подумалЯ бы опубликовал это здесь и помог бы.Если я ошибаюсь, я подниму руки и скажу это.;) Так что отзыв, пожалуйста.: D
Том.