2012-05-03 3 views
2

Modernizrを使用して機能をチェックしています。つまり、csscolumnsを実行してModernizr.load()を実行していて、この機能が利用できない場合はcss3-multi-column.jsポリフィルを使用しています。これは、Modernizr/yepnopeがModernizrスクリプト要素の直前に、また自分のスタイルシートの前にスクリプトを挿入するという事実を別にすれば、すべてうまく動作します。 Modernazrがページの最後にスクリプトを追加した場合は、css3-multi-column.jsがすべてのスタイルシートの後に含まれなければならないので、私は好きです。それは可能ですか?Modernizr.load()をページの最後に追加する

これは私のコードです:

Modernizr.load({ 
    test: Modernizr.csscolumns, 
    nope: 'http://host.org/js/libs/css3-multi-column.js'; 
}); 

はこれが可能ならば、私は、Modernizrで達成したいものです。

if (!Modernizr.csscolumns) { 
    var script = document.createElement('script'); 
    script.type = "text/javascript"; 
    script.src = 'http://host.org/js/libs/css3-multi-column.js'; 
    $('body').append(script); 
} 

答えて

1

私はちょうど同じ問題につまずくと見ていましたModernizryepnope.js)コードです。これは間違いなく、ページの最後にスクリプトを追加することはできません。

残念ながら、あなたの解決策は良いです。

もう1つの解決策は、Modernizrをページの下部に置くことです(ただし、IE8は破損します、下の注記hereを参照)。

また、私の場合には、すべての私のスタイルシートは、Modernizrによって挿入css3-multi-column.jsスクリプトの前にいたが、それはどちらか動作しませんでした。しかし、あなたの方法を使って問題を解決してください。あなたのメソッドでは、HEADに追加するときにも動作します。だから問題は、スクリプトが挿入されている場所ではなく、何か他の場所にありますか?

+0

あなたの答えをありがとう!私はイープノープソースを見るのが面倒すぎると思う。 Modernizrがjsやcssの前にロードする必要があることから、スタイルシートの後にロードするときに 'yepnope.js' +' css3-multi-coluns.js'が動作しない理由が思い出されます。とにかく、私の質問を投稿してから、yepnopeがページの末尾にスクリプトを追加することをサポートしていなかったという事実を受け入れました。私の代替コードは正常に動作しますが、私はちょうどyepnopeを使う方がクリーンなソリューションだと思っていました。 – Simon

+0

今日は 'Modernizr * 'でCSSを読み込もうとしましたが、' css3-multi-coluns.js'の前にロードされていると確信していました。 * Modernizr *コードに 'script.type =" text/javascript "を追加しても大したことはありません。私はModernizr *とあなたのコードで使われている方法の違いは分かりません。 – Etienne

+0

Modernizrがsrc/hrefやその他の属性を設定し、スクリプトとリンク要素を文書に追加すること、つまり私の回避策とほぼ同じことを、私が知る限り、本質的には同意します。 – Simon

関連する問題