जैसा कि पहले कहा गया है, यदि चित्र कैश में हैं तो Xavi उत्तर काम नहीं करेगा। यह मुद्दा वेबकीट पर प्रतिक्रिया देता है कि कैश्ड चित्रों पर लोड ईवेंट को फायर नहीं किया जा रहा है, इसलिए यदि img टैग में चौड़ाई / ऊँचाई के अटेचरों को स्पष्ट रूप से सेट नहीं किया गया है, तो छवियों को प्राप्त करने का एकमात्र विश्वसनीय तरीका ईवेंट के फ़ायर होने का इंतज़ार करना है window.load
।
window.load
ईवेंट सक्रिय करेगा हमेशा , तो यह किसी भी चाल के बिना उस के बाद की चौड़ाई / ऊंचाई और img उपयोग करने के लिए सुरक्षित है।
$(window).load(function(){
//these all work
$('img#someId').css('width');
$('img#someId').width();
$('img#someId').get(0).style.width;
$('img#someId').get(0).width;
});
यदि आपको गतिशील रूप से लोड की गई छवियों का आकार प्राप्त करने की आवश्यकता है जो कैश हो सकती हैं (पहले से लोड की गई हैं), तो आप कैश रीफ़्रेश को ट्रिगर करने के लिए Xavi विधि और क्वेरी स्ट्रिंग का उपयोग कर सकते हैं। नकारात्मक पक्ष यह है कि यह सर्वर के लिए एक और अनुरोध का कारण बनेगा, जो पहले से ही कैश है और पहले से ही उपलब्ध होना चाहिए। बेवकूफ वेबकिट।
var pic_real_width = 0,
img_src_no_cache = $('img#someId').attr('src') + '?cache=' + Date.now();
$('<img/>').attr('src', img_src_no_cache).load(function(){
pic_real_width = this.width;
});
ps: यदि आपके पास पहले से एक QueryString है img.src
, तो आपको इसे पार्स करना होगा और कैश को खाली करने के लिए अतिरिक्त पैराम जोड़ना होगा।