IE8でjQueryでoffset().top()を使うとエラーが出てしまう場合
Internet Explorer 8 でjQueryのoffset().top()でエラーが出る原因
jQueryを使ってscrolltopのアニメーションを使ったスクリプトを作っていると
IE8で、エラーが表示されました。
ChromeとかIE11とかでは問題なく使えるのですが、古いIEではエラー出てしまいます
原因としては、offset().top()で値が取得できていないのが原因でした、他のブラウザでは問題なかったので見落としていました、それに他の箇所で使っているoffset().top()では問題なかったので悩みました。
何にoffset()を使っていたかというと、他のページからアンカー付きでアクセスが有った時にスムーズスクロールをさせるために、その場所を特定するためにoffset().top()でページの上部から何pxの位置かを取得していましたので、アンカーがついていない時に取得出来ずにエラーが出ていたというものです。
コードの一部に条件分岐をつけて、アンカー付きのURLでアクセスが有った時だけ、実行するように変えてやるとエラーがでなくなり解決しました
offset()を使う場合には、確実に対象がある状態でのみ使うようにしてやる必要があるということを今回は知りました。セレクタが存在しない時は、何も実行されずに終わるだけなのかと思っていましたが offset() を使ったケースでは、セレクタが存在していないとブラウザに警告が出るとは思っていませんでした。他にも、こういった同じようなパターンがあるかもしれないので、少し気をつけて置く必要がありますね。
最新のモダンブラウザでは、こういった問題は発生しなかったので。新しいブラウザでは、こういったことは意識しなくてもいいのかもしれませんが
COMMENT