2

私のアプリケーションは以前、Modernizr を多用してスクリプトと shim をロードしていましたが、Angular JS のロードに関する問題でしばらく立ち往生していました。JQuery の直後に Modernizr を使用してロードすると、エラーが発生します。モジュールがありません: (モジュール名);

しかし、スクリプトをロードする前に JQuery と Angular を上に移動すると、Angular スクリプトの前にロードされていても、JQuery (Angular コントローラー スクリプト内) を使用する行は失敗します。以下のスクリプトを使用して、modenizr がロードされた後にインライン スクリプトを延期しています。modenizr がすべてのスクリプトのロードを完了した後に実行されます。スクリプトの読み込み行をオフにコメントすると、すべて問題ありませんが、現在のページのインライン スクリプトは失敗します。

docready=[],$=function(){return{ready:function(fn){docready.push(fn)}}},
4

1 に答える 1

1

配列にプッシュする単純な遅延関数を作成することで、この問題を解決します。

var _a = {ready: function(fn){ _as.push(fn);}}

通常の $(document).ready を以下の構文に置き換えます。

_a.ready(function(){

次に、modernizr が必要なすべての JS のロードを完了した後に、この関数を呼び出します。

for(n in _as) _as[n]();

それで全部です。

于 2012-10-20T07:40:57.293 に答える