JavaScript: Chrome で window.scrollBy が効かない場合の解決方法

http://example.com/foo#bar みたいなページがロードされたら、#bar の位置までスクロールされますが、10ピクセルだけスクロールを戻したいとします。

Firefoxでは、次のコードでOK。


$(document).ready(function () {
window.scrollBy(0, -10);
});

しかし、Chromeではダメ。#bar までスクロールする処理は、ドキュメントが ready になった後で行われるから。

ちょっと汚いけど、次のように書きます。


$(document).ready(function () {
setTimeout(function() { window.scrollBy(0, -10); }, 1);
});

[参考資料]