0

私は ASP.NET アプリのクライアント側の作業を行っており、以下の関数はブラウザー間で機能します。

$('#identifier').click(function () {
    $('#script-placeholder').append('<script type="text/javascript" 
    src="SERVICEURL?callback=test"></script>');
});

ID が「identifier」の要素をクリックすると、サービスは JS 関数呼び出しでラップされた応答を返します (つまり、

test('response');

ただし、IE8 と IE9 では、スクリプトを 1 回実行して別のページに移動し、戻って「識別子」をもう一度クリックすると、コールバック関数が 2 回呼び出されます。誰もが理由を知っているか、回避策を知っていますか? どんな助けでも大歓迎です!(ローカルホストでこの問題が発生していることに注意してください)...

4

2 に答える 2

1

私が知っているアプローチは 2 つあります 。
アプローチ 1:-
呼び出しの前に URL にパラメーターを追加します。

$('#identifier').click(function () {
     $('#script-placeholder').append('<script type="text/javascript" 
    src="SERVICEURL?callback=test&t="+Math.random()></script>');
});

上記はほんの一例です。状況を確認する必要があります。

もう一つは

使用している場合は、次のようにサービスページにキャッシュを設定しませんgeneric handler

    context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
    context.Response.Cache.SetNoStore();
于 2013-01-29T05:30:19.957 に答える
0

皆さんの回答に感謝します!質問を投稿した後、私は読み回していましたが、スクリプトタグを追加する代わりに呼び出しを行う別の方法があることがわかりました.jQueryのgetScript ...それは私にとってうまくいきました。これが私がそれをどのように使用したかです:

    $('#identifier').click(function () {
        var url = 'SERVICEURL?callback=test'
        $.getScript(url);
    });

うまくいけば、これは将来誰かを助けるでしょう!参考までに: Jquery のサイトをさらに読んだ後、これを見つけました (これがキャッシングの問題を回避する方法です): デフォルトでは、$.getScript() はキャッシュ設定を false に設定します。これにより、タイムスタンプ付きのクエリ パラメータがリクエスト URL に追加され、リクエストされるたびにブラウザがスクリプトをダウンロードするようになります。

于 2013-01-29T05:06:41.500 に答える