0

すべての JavaScript ファイルを 1 つのファイルにバンドルする必要があります。これが要件です。これで、JavaScript ファイルを連結するためにいくつかの面倒なタスクを設定しました。シナリオ:

jquery.js
jquery.plugin1.js
custom.js
>> combined.js

私の開発セットアップでは、yepnopejsすべてのスクリプトをロードし、完了時に実行するために使用しています。これはうまくいきます。連結ファイルを除いて、すべての私の JavaScript コードは正常に動作します。jQuery の実行が早すぎるようで、一部のセレクターが実際のマークアップと一致しません。

development
$('input, select').not(':hidden').each(function(){...});
>> length: 21 items

作品

production (concated file)
$('input, select').not(':hidden').each(function(){...});
>> length: 0 items

動作しません。

初期化

development
yepnope([
    {
      load: 'http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js'
    }, 
    {
    load: 'js/jquery.plugin1.js',
    complete: function() {
        onReady();
    }
}]);

production
$(window).load(function(){
    onReady();
});

なども試しまし$(document).ready(function)た。初期化部分が壊れているか、完全に間違っていると確信しています。

4

1 に答える 1

1

この種の状況では、何が起こっているかをデバッグするのに役立ついくつかの手順があります。

  1. JavaScript 参照をページの下部に移動してみてください。これで問題は解決しますか?
    1. asyncスクリプト参照でまたはdefer属性を使用することで問題は解決しますか?
  2. スクリプトがクロージャー"use strict"内で動作することを確認し、 JSLintを渡します。
  3. 機能します$(document).ready()か?
  4. 手順 1 が機能し、手順 2 と 3 が機能しなかった場合は、マークアップを変更する許可を求めてください。手順 2 で提供される修正により、間違いなく信頼性が向上しますが、問題は解決されません。
于 2013-07-05T14:03:41.103 に答える