2013-02-01 20 views
13

संभव डुप्लिकेट का उपयोग कर मौजूद है:
Check if image exists with given url using jquery
Change image source if file existsजांच की जा रही है, तो छवि जावास्क्रिप्ट

मैं boxvalue में एक पाठ बॉक्स से एक छवि पथ का मूल्य फेंक कर रहा हूँ और अगर मान्य करने के लिए चाहते हैं जावास्क्रिप्ट का उपयोग कर छवि मौजूद है।

var boxvalue = $('#UrlQueueBox').val(); 

मैंने स्टैक ओवरफ्लो ब्राउज़ किया और छवि की चौड़ाई/ऊंचाई प्राप्त करने के लिए नीचे पाया, लेकिन इसका उपयोग नहीं करना चाहते हैं।

var img = document.getElementById('imageid'); 

यदि मैं वास्तव में छवि पथ से एक छवि है तो मैं कैसे सत्यापित कर सकता हूं?

+4

इस सूत्र देखो : //stackoverflow.com/questions/5678899/change-image-source-if-file-exists –

+0

@ फ़ेलिपऑरियन यह एक नई छवि बनाने के लिए है। – X10nD

+0

आपका प्रश्न वास्तव में क्या है? मुझे आपकी पोस्ट में कोई प्रश्न चिह्न नहीं दिख रहा है ... – maerics

उत्तर

47
// The "callback" argument is called with either true or false 
// depending on whether the image at "url" exists or not. 
function imageExists(url, callback) { 
    var img = new Image(); 
    img.onload = function() { callback(true); }; 
    img.onerror = function() { callback(false); }; 
    img.src = url; 
} 

// Sample usage 
var imageUrl = 'http://www.google.com/images/srpr/nav_logo14.png'; 
imageExists(imageUrl, function(exists) { 
    console.log('RESULT: url=' + imageUrl + ', exists=' + exists); 
}); 
+0

यह परीक्षण एक नई छवि बनाता है जो संसाधनों के अंतर्गत सहेजा जाता है -> Google क्रोम ब्राउज़र में छवियां यूआरएल वैध छवि है या नहीं, जिसे मैं विशेष रूप से पसंद नहीं करता हूं। –

+1

यह बहुत अच्छा है, लेकिन क्या आप इसे यूआरएल वापस करने के लिए प्राप्त कर सकते हैं? मुझे एक लूप मिला है जो किसी सूची के लिए आइकन लोड करने का प्रयास करता है, और मुझे ऐसा कुछ चाहिए जो आपके द्वारा किए गए यूआरएल को वापस कर देगा, या यदि छवि मौजूद नहीं है तो एक डिफ़ॉल्ट यूआरएल वापस आ जाएगा। सभी समाधान कंसोल पर कुछ कोड या डंप चलाने लगते हैं। – chazthetic

5

आप एक फ़ंक्शन बना सकते हैं और complete संपत्ति देख सकते हैं।

function ImageExists(selector) { 
    var imageFound = $(selector); 

    if (!imageFound.get(0).complete) { 
     return false; 
    } 
    else if (imageFound.height() === 0) { 
     return false; 
    } 

    return true; 
} 

और पैरामीटर के रूप में एक चयनकर्ता (अपने मामले) के बजाय यूआरएल के साथ इस funciton

var exists = ImageExists('#UrlQueueBox'); 

एक ही समारोह फोन: http:

function imageExists(url){ 

    var image = new Image(); 

    image.src = url; 

    if (!image.complete) { 
     return false; 
    } 
    else if (image.height === 0) { 
     return false; 
    } 

    return true; 
} 
+1

इसे # चयनकर्ता या # आईडी के बिना किया जा सकता है। मैं इसे सीधे रास्ते से चाहता हूं। – X10nD

+0

वह सभी ब्राउज़र में काम करेगा, क्योंकि यह काम करेगा, अगर पहले से लोड की गई छवि कैश्ड है। और इसलिए एक नई छवि का निर्माण, पहले से ही कैश किए गए एक को लोड करेगा। लेकिन अगर वह प्रक्रिया विफल हो गई है, तो यह असफल हो जाएगी, यह तब होता है जब कैश अक्षम होता है। हालांकि अभी भी एक अच्छा काम है। –

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