0

public メソッドを返す JavaScript ファイルがあります。この JavaScript ファイルは、最初にロードするのではなく、必要なときにのみプリロードします。例:

(function () {
  // Some privat vars and functions
  var something = 'Something goes well!';

  function doSomething() {
    console.log(something);
  }  

  return {
    doSomething: doSomething,
    doAnotherThings: doAnotherThing
  }
})();

本当に必要なときに JavaScript ファイルをプリロードするために、jQuery を使用して関数を作成しました。ここに関数があります:

function load(file, callback) {
  var head = $("html").closest("head"),
      tag = $("<script />", {
        type: "text/javascript"
      });

  tag.on("load", callback);
  tag.attr("src", file);

  head.append(tag);
}

私の質問は、ロードされたばかりのスクリプトから返されたパブリック オブジェクトを引数としてコールバックに渡す方法です。それらの public メソッドが利用可能になり次第、それらを使用したいので…</p>

4

3 に答える 3

0

ファイルをロードするときにイベントをトリガーし、コールバック関数がそのカスタム イベントをリッスンするようにすることができます。

jQueryトリガーメソッドを使用できます - http://api.jquery.com/trigger/

于 2012-07-20T12:08:42.960 に答える
0

すでに jQuery を使用している場合は、組み込みの $.fn.get を使用できます。これは、ロードの成功時に起動するコールバックを受け取ります: http://api.jquery.com/jQuery.get/

(代わりに、独自のロード関数をロールしたいかもしれませんが?)

于 2012-07-20T12:18:05.187 に答える
0

function匿名の戻り値を変数に割り当てるだけです。callback functionその後、たとえば、内でそれを使用できるようになります

var loaded = (function () {
    return {
        foo: function () {

        }
    };
})();

あなたの中で、callback functionあなたはただ使うことができますloaded.foo.

jQuery を使用$.getScript()しているので、JS ファイルを取得するために使用することをお勧めします。これにより、コードがより簡単になります。

function load(file, callback) {
    $.getScript(file, callback);
}

次に、次のように使用できます。

load('js/test.js', function () {
    console.log(loaded.foo());
});
于 2012-07-20T12:20:42.217 に答える