$("#test").click(function () {
$('html,body').animate({ 'scrollTop': '0' }, 500)
})
このコード行は jQuery の書き方を使用しており、500 ミリ秒のアニメーションがあります。このように Chrome ブラウザなどで問題なく実行できます。
しかし、今日プロジェクトを書いている際に、コードを IE10 に対応させる必要があったため、IE ブラウザで実行することになりました。すると、このコード行がエラーを報告することがわかりました。これはなぜでしょうか?
簡単に分析すると、これは setTimeout のような JavaScript の書き方に似ています。setTimeout では、2 つのパラメータがあり、それぞれが指定された時間とタイマー時間を表します。
そして、animate はアニメーションのプロパティであり、この時間は 500 ミリ秒かかって完了します。しかし、これは重要ではありません。なぜエラーが発生するのでしょうか?
この時、私は 500 の後ろにある,
に注目しました。突然、1 つの可能性が浮かびました。,
を削除してみましょう。案の定、コンソールにエラーが表示されなくなりました。
おそらく、これは IE の仕組みによるもので、ブラウザは,
を認識すると、自動的に後に文が続くと想定します。しかし、空白のままにしておくと、ブラウザの期待とは異なる結果が生じ、エラーが発生します。おそらく IE のエンジンは要求が厳格なのでしょう。