उपयोगकर्ता की ब्राउज़र विंडो में फिट होने के लिए बड़ी छवि का आकार बदलने के लिए मैं कुछ जावास्क्रिप्ट लिख रहा हूं। (मैं दुर्भाग्य से स्रोत छवियों के आकार को नियंत्रित नहीं करता हूं।)
तो ऐसा कुछ HTML में होगा:
<img id="photo"
src="a_really_big_file.jpg"
alt="this is some alt text"
title="this is some title text" />
क्या मेरे लिए यह निर्धारित करने का कोई तरीका है कि क्या टैग src
में छवि img
डाउनलोड की गई है?
मुझे इसकी आवश्यकता है क्योंकि मैं एक समस्या में चल रहा हूं यदि $(document).ready()
ब्राउज़र को छवि लोड करने से पहले निष्पादित किया जाता है। $("#photo").width()
और $("#photo").height()
प्लेसहोल्डर के आकार (कुल पाठ) को वापस कर देगा। मेरे मामले में यह 134 x 20 की तरह है।
अभी मैं जाँच कर रहा हूँ कि क्या फोटो की ऊँचाई 150 से कम है, और यह मानकर कि यदि यह सिर्फ पाठ है। लेकिन यह काफी हैक है, और यह टूट जाएगा अगर कोई फोटो 150 पिक्सेल से कम लंबा (मेरे विशेष मामले में संभावना नहीं है), या यदि उच्चतम पाठ 150 पिक्सेल से अधिक लंबा है (संभवतः एक छोटे ब्राउज़र विंडो पर हो सकता है) ।
संपादित करें: किसी को भी कोड देखना चाहते हैं:
$(function()
{
var REAL_WIDTH = $("#photo").width();
var REAL_HEIGHT = $("#photo").height();
$(window).resize(adjust_photo_size);
adjust_photo_size();
function adjust_photo_size()
{
if(REAL_HEIGHT < 150)
{
REAL_WIDTH = $("#photo").width();
REAL_HEIGHT = $("#photo").height();
if(REAL_HEIGHT < 150)
{
//image not loaded.. try again in a quarter-second
setTimeout(adjust_photo_size, 250);
return;
}
}
var new_width = . . . ;
var new_height = . . . ;
$("#photo").width(Math.round(new_width));
$("#photo").height(Math.round(new_height));
}
});
अपडेट : सुझावों के लिए धन्यवाद। यदि मुझे इस $("#photo").load
घटना के लिए कॉलबैक सेट किया जाता है, तो घटना का कोई जोखिम नहीं है , इसलिए मैंने सीधे छवि टैग पर एक ऑनलाड घटना को परिभाषित किया है। रिकॉर्ड के लिए, यहां वह कोड है जिसे मैंने समाप्त किया है:
<img id="photo"
onload="photoLoaded();"
src="a_really_big_file.jpg"
alt="this is some alt text"
title="this is some title text" />
फिर जावास्क्रिप्ट में:
//This must be outside $() because it may get called first
var isPhotoLoaded = false;
function photoLoaded()
{
isPhotoLoaded = true;
}
$(function()
{
//Hides scrollbars, so we can resize properly. Set with JS instead of
// CSS so that page doesn't break with JS disabled.
$("body").css("overflow", "hidden");
var REAL_WIDTH = -1;
var REAL_HEIGHT = -1;
$(window).resize(adjust_photo_size);
adjust_photo_size();
function adjust_photo_size()
{
if(!isPhotoLoaded)
{
//image not loaded.. try again in a quarter-second
setTimeout(adjust_photo_size, 250);
return;
}
else if(REAL_WIDTH < 0)
{
//first time in this function since photo loaded
REAL_WIDTH = $("#photo").width();
REAL_HEIGHT = $("#photo").height();
}
var new_width = . . . ;
var new_height = . . . ;
$("#photo").width(Math.round(new_width));
$("#photo").height(Math.round(new_height));
}
});
max-width
औरmax-height
छवि स्टाइल में क्या गलत है? तब आप उस सभी कोड से बचते हैं, जिसे आपको व्यूपोर्ट की चौड़ाई / ऊंचाई के आकार में अधिकतम चौड़ाई / ऊँचाई सेट करके लिखने की आवश्यकता होती है।