2012-03-06 3 views
3

私のサイトをできるだけ早く保つために、私は文書の終わりで、閉じているbodyタグの直前に.jsスクリプトをロードして、HEADセクションのCSSを予約することをお勧めします。しかし、私は明らかに下のhtml shivコードは、HEADセクションでインスタンス化されたときにのみ動作することがわかりました。HTML5shivはHEADセクションでのみ機能しますか?

<!--[if lt IE 9]> 
    <script type="text/javascript" 
     src="http://html5shiv.googlecode.com/svn/trunk/html5.js"> 
    </script> 
<![endif]--> 

誰かが回避策を知っていますか?

答えて

14

HTML5 shivが動作する方法要素を<head>要素に入れる必要があります。実際には、それはproject pageにして書かれています:

このスクリプトを使用するには、それは<body>要素(すなわち<head>中)の前に含まれていなければならないが、それはCSSの前または後に表示される場合は問題ありません - しかし、パフォーマンスのために、最初にCSSを含める方が良いでしょう。

これは、IEがHTML5要素を認識して文書本体を構築する前に認識できるようにするためです。

この問題を回避する方法はありません。

ここでは、すべてのスクリプトをページの最後に置くことに戸惑うことはありません。 CDNは、サービスを提供するのにかなり素早いので、この特定のスクリプトを移動する必要はありません。


しかし、Googleのコードは実際にはCDNではありませんので、他の人が、前述したように、あなたは別のソースを選択する必要があります。

+0

おかげBC、ちょうど私が何かが欠けていなかったことを確認したかったです。 – RegEdit

+0

私はこの部分も忘れて、頭のタグに移動し、IE8ではすべてが完璧に機能しました。 –

19

GoogleコードはNOT CDNです。トランクのファイルをリンクしないでください。

レスポンスヘッダを見てみましょう。

Google code is NOT a CDN

キャッシュは、それは我々がCDNから何をしたいの正反対だ... 3分後に期限が切れます。

これをやめてください。 html5shiv:ジョアン・クーニャとして

あなたはcdnjs.com上の実際のCDNリンクを見つけることができ、コメントしています。 (respond.jsがそこにも見つけることができます)

サンプル:

<!--[if lt IE 9]> 
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js"></script> 
<script src="//cdnjs.cloudflare.com/ajax/libs/respond.js/1.4.2/respond.js"></script> 
<![endif]--> 
+0

とても美しい答えです。私はちょうどgooglecode html5shivの10以上のリンクに出くわしました。もし可能ならば – Sam

+0

+10。私はこれについて疑問に思っています... –

+1

これに加えて、私はcdnjsを使うことをお勧めします:https://cdnjs.com/libraries/html5shiv –

関連する問題