2009-05-30 17 views
41

मेरे पास ऐसी वेबसाइट है जो अजाक्स का भारी उपयोग करती है। कभी-कभी मुझे उपयोगकर्ता के लिए पृष्ठ पर बड़ी छवि फ़ाइलों को लोड करने की आवश्यकता होती है। मेरा सवाल यह है कि, जब इन बड़ी छवि फ़ाइलों को डाउनलोड किया जा रहा है, तो क्या उन्हें रोकने का कोई तरीका है, अगर उपयोगकर्ता छवि प्रदर्शित करने वाले पृष्ठ से दूर निकलता है? धन्यवाद।जावास्क्रिप्ट: छवि अनुरोध रद्द करें/रोकें

+0

क्या आप देख रहे हैं कि ब्राउजर * पृष्ठ से दूर नेविगेट करते समय डाउनलोड रद्द नहीं कर रहा है? मैं मानता हूं कि यह चाहिए। हालांकि, मैं आसानी से कल्पना कर सकता हूं कि विभिन्न ब्राउज़रों के अलग-अलग व्यवहार हो सकते हैं। दुर्भाग्य से। – Bruce

+2

ठीक है, यह एक अजाक्स एप्लिकेशन है इसलिए मैंने पृष्ठ को कभी नहीं छोड़ा, हालांकि, मैंने पेज को छोड़ने की कोशिश की और मुझे आश्चर्य हुआ कि छवि डाउनलोड करना बंद नहीं करती है। वाह। इसकी उम्मीद नहीं थी। मैं यातायात देखने के लिए एफएफ 3.0.10/आईई 8 और फिडलर का उपयोग कर रहा हूं। – frio80

उत्तर

55

मैं जाने पर उपयोगकर्ताओं के पृष्ठांकित 'जल्दी से के माध्यम से (AJAX) खोज परिणामों ब्राउज़र अभी भी हर पृष्ठ न सिर्फ मौजूदा एक के लिए प्रोफ़ाइल छवियों डाउनलोड करने के लिए कोशिश कर रहा था ठीक उसी मुद्दा, था। इस कोड को मेरे लिए काम किया, पेजिंग घटना पर कहा कि बस से पहले नई खोज चलाया गया था:

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

मूलतः यह ब्राउज़र पर "बंद करो" बटन पर क्लिक की तरह है।

आईई, फ़ायर्फ़ॉक्स, क्रोम, ओपेरा और सफारी

+0

धन्यवाद, MyWhirledView बहुत sooooo। मैं इसे दिनों के लिए पकड़ रहा हूं। – Alex

+1

दुर्भाग्य से यह सफारी में काम नहीं करता है :( – Alex

+6

यह * सफारी में काम करता है ... इसी तरह की समस्या को देखें और यहां ठीक करें: http://stackoverflow.com/questions/3146200/stop-loading-of-images- ऑन-ए-हैशचेंज-इवेंट-थ्रू-जावास्क्रिप्ट-या-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 को आप कॉल $ .ajax() या $ .Get की वापसी मान असाइन कर सकते हैं।

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

विंडो को संभालें। अनुरोध करें और अनुरोध को निरस्त करें।

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

मैं छवियों को लोड करने के लिए AJAX का उपयोग नहीं कर रहा हूँ। मैंने सोचा था कि सेटिंग src = '' चाल करेगा लेकिन यह नहीं करता है। मैं वास्तव में इसे एक दस्तावेज़ के लिए देख रहा हूं .getElementById ('image')। StopLoading(); :) – frio80

-3

गरीब मनुष्य समाधान में परीक्षण किया गया बस एक रिक्त स्ट्रिंग पर छवि टैग की एसआरसी गुण सेट करने के लिए हो सकता है, या एक विजेट की ओर इशारा करते हैं।

संपादित

अपनी टिप्पणी देखा है, यह एसआरसी संपत्ति को बदलने के लिए खाली ... एक blank.gif या कुछ का उपयोग कर प्रयास के साथ काम नहीं करता है हैरान कर दिया।

यदि यह काम नहीं करता है, तो आप ब्राउज़र आर्किटेक्चर से बाध्य हो सकते हैं, जिसका अर्थ है कि आप एसओएल हैं।

0

एसआरसी टैग को एक अलग छवि पर पुन: असाइन करना आईई 7 में काम नहीं करता है, यह पहली छवि डाउनलोड करने की कोशिश कर रहा है।

मैं एक HTTP हैंडलर प्रकार जेपीईजी की है कि बनाया:

यहाँ सेटअप है। इसमें कोड शामिल है जो कभी निष्पादित नहीं करता है। तो कुछ Image.src = myhandler.ashx लगातार समय तक लोड होने तक वहां बैठेगा।

इस के बीच, प्रेस एक और बटन है कि एक छोटी सी छवि फ़ाइल के लिए छवि reassigns में: someImage.src = small.jpg

myhandler.ashx के लिए अनुरोध अंत नहीं है, भले ही हम पुन: सौंपा है स्रोत

इसके अलावा अगर आप वास्तव में नोड someImage.parentNode.removeChild (someImage) को हटा अभी भी myhandler.ashx

IE7 के साथ परीक्षण किया गया और HTTP घड़ी प्रो के साथ नजर रखी डाउनलोड करने के लिए कोशिश कर रखता है।

+0

मेरे पास हमारे पृष्ठ का एक अनुभाग है कि मैं सभी छवि लोडिंग को रोकना चाहता हूं। अगर मैं पैरेंट नोड पर जाता हूं और आंतरिक HTML को "" सेट करता हूं, तो यह सभी अनुरोधों को बंद करता है अच्छी तरह से। यह केवल आईई, सफारी और फ़ायरफ़ॉक्स के लिए काम करता है, छवियों को लोड करना जारी रखेगा चाहे कोई फर्क नहीं पड़ता (प्रोग्राम के रूप में स्टॉप बटन पर क्लिक करना अन्य कारणों से मेरे लिए उपयुक्त नहीं है) –

संबंधित मुद्दे