Google ChromeのCSSOMは相変わらず間違っている
追記
ver. 33.0.1750.117 m でCSSOMの実装が以前のバージョンに戻った。今は下記のエラーは表示されない
しかしこの実装は間違っているので、将来的には変更があると思われる。
以下は追記以前の情報
body.scrollTopに値がセットできなくなった
こういうエラーが出るようになった。
body.scrollTop is deprecated in strict mode. Please use 'documentElement.scrollTop' if in strict mode and 'body.scrollTop' only if in quirks mode.
しかし、実際にはbodyはスクロールできる。このバグは報告されている。
https://code.google.com/p/chromium/issues/detail?id=312435
document.document.Element.scrollHeight と body.scrollHeight
仕様にのっとると、スクロール最大可能量は
html.scrollHeight - html.clientHeight
で求められる。
しかし、WebkitとBlinkでは
body.scrollHeight - html.clientHeight
になる。
デモ: http://software.hixie.ch/utilities/js/live-dom-viewer/?saved=2777
対応
このバグはhtml, bodyにサイズの変わるCSSを適用していると起きる。たぶんborder・・・たぶん。それをやめれば解決する。多くのサイトで対応する必要無し。そもそもscrollHeight
を使っていないと思う。
何が起きたか
Google Chromeはhtml.scrollTop
が呼ばれたらbody.scrollTop
を返すようにしただけで、実際の(内部の)修正はしていないっぽい。相変わらずbodyがviewport scrollingを受け持っている。
追記にも書いたが、今は↑は違う。