LoginSignup
6
6

More than 5 years have passed since last update.

CoffeeScriptでIE8に対応するときにやったこと

Posted at

直接CoffeeScriptと関係ないのも含む。

Array.prototype.indexOfをサポートしていない

Array.prototype.indexOf の追加

Array::indexOf or= (item) ->
    for x, i in this
        return i if x is item
    return -1

mouseoutのイベントが発火しない

hoverは動くが、mouseoutが効かない。

$(document)
    .on 'hover', '.foobar', -> doSomething()
    .on 'mouseout', '.foobar', -> doSomething2()

どうしたら対応できるか調べた限り分からなかったので、あまり重要じゃないUIインタラクションだったので、IE8のときは hover の処理をしないようにした。

$(document)
    .on 'hover', '.foobar', ->
        return if $.browser.msie and $.browser.version is '8.0'
        doSomething()
    .on 'mouseout', '.foobar', -> doSomething2()

jQuery.onで対応する方法があれば教えて欲しい。

titleタグのテキストが変更できない

$('title').text('new title')

jQueryのtext関数を使った上記のコードでは動かない。なので、下記のバニラなJavaScriptで書く。

document.title = 'new title'

開発者ツールを開くまで console.log は使えない

という事実を心得ておく。

「なぜかJSが開発ツールを開かないと途中までしか動かない」という現象が発生した。どうやらIE8は「開発ツール」を開くまで console.log が使えないようで、そのためコードに console.log が入っていると、その行で処理が止まってしまう様子。

ちなみに、開発ツールを一度でも開いてしまえば、閉じたとしても console.log で引っかかることがないみたいだ。つまり、開発ツールを閉じても console.log は削除されない様子。

参考: IEでwindow.console.log()を使う時は要注意 | ReBuy開発者ブログ

6
6
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6