2009-05-30 18 views
41

私はAjaxを大量に使用するウェブサイトを持っています。場合によっては、ユーザーのページに大きな画像ファイルを読み込む必要があります。私の質問は、これらの大きな画像ファイルがダウンロードされているときに、例えば、ユーザーが画像を表示しているページから離れて移動すると、それらを止める方法があるかどうかです。ありがとう。Javascript:キャンセル/画像リクエストのキャンセル

+0

ページから移動するときにブラウザ*がダウンロードをキャンセルしていないことに気づいていますか?私はそれがすべきことに同意する。しかし、私は、異なるブラウザが異なる振る舞いをする可能性も簡単に想像することができます。残念ながら。 – Bruce

+2

さて、これはajaxアプリケーションなので、私はページを残すことはありませんでした。私はページを「残して」みましたが、驚いたことにイメージはダウンロードを停止しません。ワオ。期待していませんでした。 FF 3.0.10/IE8とFiddlerを使用してトラフィックを監視しています。 – frio80

答えて

55

私は正確に同じ問題を持っていた、ときに、ユーザーに迅速(AJAX)を介して「ページング」の検索結果がブラウザにはまだすべてのページだけではなく、現在の1のプロファイル画像をダウンロードしようとしていました。

//cancel image downloads 
if(window.stop !== undefined) 
{ 
    window.stop(); 
} 
else if(document.execCommand !== undefined) 
{ 
    document.execCommand("Stop", false); 
} 

は、基本的には、ブラウザの「停止」ボタンをクリックするようなものだ:このコードは、新しい検索が実行された直前にページングイベントに呼ばれ、私のために働きました。

が悪くマン溶液は単に空の文字列にイメージタグのSRCプロパティを設定する、またはウィジェットに向けてそれを指すようになるであろうIEは、Firefox、クロム、オペラとSafari

+0

ありがとうsooooo多くのMyWhirledView。私はこれを数日間取り組んできました。 – Alex

+1

残念ながら、これはサファリでは機能しません:( – Alex

+6

これはSafariで動作します...同様の問題を参照して修正してください:http://stackoverflow.com/questions/3146200/stop-loading-of-images- on-a-hashchange-event-via-javascript-or-jquery –

2

イメージをロードするためにajaxを使用していると仮定すると、単にwindow.onunloadイベントでリクエストを中止することができます。使用しているXMLHttpRequestオブジェクトのグローバル変数を宣言します。

var xhr; 
//if using the XMLHttpRequest object directly 
//you may already be doing something like this 
function getImage(...){ 
    xhr = new XMLHttpRequest(); 
    xhr.open(....); 
} 

のjQueryを使用している場合、あなたはXHR変数への呼び出しあなたは$アヤックス()または$に.getの戻り値を割り当てることができます。

xhr = $.ajax(.....); 

要求を処理して、要求を中止します。

window.onunload = function(){ 
    xhr.abort(); 
} 
+0

私は画像をロードするためにajaxを使用していません。 私はsrc = ''がトリックを行うと思ったが、そうはしなかった。 私が本当に探しているのは、document.getElementById( 'image')。stopLoading(); :) – frio80

-3

でテスト。

編集

あなたのコメントを見て、それが空にするSRCプロパティを変更すると動作しません... blank.gifか何かを使用してみてください驚かせました。

これでうまくいかない場合は、ブラウザのアーキテクチャに拘束される可能性があります。つまり、あなたはS.O.Lです。

0

IE7ではSRCタグを別のイメージに再割り当てしても機能しません。最初のイメージのダウンロードが続けられます。

ここにセットアップがあります。

JPEGのタイプのHTTPハンドラを作成しました。これには実行を終了しないコードが含まれています。だからsomeImage.src = myhandler.ashxはタイムアウトするまで永久にそこに座ります。小さな画像ファイルに画像を再割り当てし、この途中で

、押して別のボタン: someImage.src = small.jpg

myhandler.ashxの要求は、我々が再割り当てされているにもかかわらず、終わっていませんsrc。あなたが実際にノードsomeImage.parentNode.removeChild(someImage)を削除した場合

さらにまだmyhandler.ashx

IE7でテストおよびPro HTTPウォッチで監視をダウンロードしようとし続けています。

+0

私はすべての画像の読み込みを停止させたいというページのセクションがあります。親ノードに移動してinnerHTMLを ""に設定するとIE用に見つかりました。これはIE、Safari、Firefoxでのみ動作しますが、何らかの問題(プログラムによって停止ボタンをクリックすることは他の理由で私には適していません) –

3

このようです。

$(img).attr('src',''); 
関連する問題