Head JS 0.96でIE7がフリーズする不具合を見つけた

前に「JavaScriptバリバリなサイトの救世主Head JS」っていう記事で紹介した多機能スクリプト、Head JSにIE7がフリーズしてしまう不具合を見つけてしまった。

Head JSには、レガシーブラウザでもHTML5の新要素が使えるようになるhtml5.jsと同様の機能が組み込まれているんですが、どうやらこの部分がIE7と相性が悪いようです。

フリーズが起こるのは以下の条件のとき。

  • html要素とbody要素にheight: 100%;を指定している。
  • widthを指定した固定幅の要素がある。
  • IE7のウィンドウサイズを縮小して横スクロールバーが出る状態にする。

具体的には以下のようなCSSを指定した場合です。

html, body {
  height: 100%;
}
section {
  margin: 0 auto;
  width: 960px;
}

Head JSからhtml5.jsに切り替えたところ、不具合は起こらなくなりました。

Head JSが優れたスクリプトなだけに残念です。っていうか、Head JSが残念なのではなく、IE7が残念なブラウザってことなんですよ。歴史がそう語っている。

というわけで、Head JSの代わりになるスクリプトを探したんですけど、実際のところ、Head JSの機能の一割ぐらいしか活用していなかったという事実に気が付き、ハブ的な役割に特化したjsローダーさえあればいいという結論になりました。

そして、良さげなjsローダー見つけました。それはまたの機会に。