1

javascriptで、トップレベルのクロージャーにある自己実行関数の実行を延期することは可能ですか? (分かりやすいように、jQueryはこれを使っています。グローバルスコープで自己実行機能を持っています)

ここでの私の目的は、外部スクリプト全体をダウンロードを延期せずに後で実行できるようにすることです。これにより、できるだけ早くダウンロードしてイベントの後に実行します (そのイベントがいつ発生するかは私が決定します)。

これも見つけました:
https://developer.mozilla.org/en-US/docs/DOM/element.onbeforescriptexecute

私が欲しいものの「パート1」のように聞こえます。キャンセルすると、スクリプトは実行されません。しかし、その後...後で効果的に実行するにはどうすればよいですか?

注 1:私はその外部スクリプトをまったく制御できないため、変更することはできません。

注2:私もこれを要求した人も、このようなことが原因でIEが遅くなっても気にしません(ええ、本当です!(s)彼は私のようなアンチIEです)

編集(追加情報):
@SLaksサーバーは、Apacheが送信するデフォルトのヘッダー(そう思われる)に加えて、12時間キャッシュするように注文するキャッシュ制御ヘッダーを送信します。
ドメインに関するルールの POV から、クロスドメインです。
他のサーバーに関する定義を変更することはできません。でも、お願いしてみることはできます。

4

1 に答える 1

1

残念ながら、<script>タグを使用して実行することはできません。外部スクリプトのテキストをそのように含めて、コードでラップして遅延させることができないためです。それができれば、クロス サイト リクエスト フォージェリ ( CSRF ) でまったく新しい可能性の世界が開かれます。

ただし、同じドメイン名でホストされている限り、AJAX 要求でスクリプトを取得できます。その後、その実行を遅らせることができます。

$.ajax({
    url: '/path/to/myscript.js',
    success: function(data) {
        // Replace this with whatever you're waiting for to delay it
        $.ready(function() {
            eval(data);
        });
    }
});

EDITスクリプトを含めるためにRequireJSを 使用し$.getScript()ているので、自分自身を使用したことがないため、必要なものに役立つかどうかはわかりませんが、これを見てください: http://api.jquery.com/jQuery.getScript /

参考 までに、CSRF 攻撃について私が話していることを知りたい場合は、こちらをご覧ください

于 2013-02-07T16:20:21.860 に答える