2010-06-08 19 views
117

क्या उपयोगकर्ता जावास्क्रिप्ट या जावास्क्रिप्ट के साथ किसी फ़ंक्शन को ट्रिगर करने का कोई तरीका है जब उपयोगकर्ता ब्राउज़र विंडो का आकार बदलने के लिए समाप्त होता है?पता लगाएँ कि जावास्क्रिप्ट का उपयोग करते समय विंडो का आकार बदलता है?

अन्य संदर्भ में:

  1. मैं माउस घटना है जब उपयोगकर्ता ब्राउज़र विंडो का आकार है का पता लगाने कर सकते हैं? अन्यथा:
  2. क्या मुझे पता चल सकता है कि विंडो का आकार बदलने का ऑपरेशन कब समाप्त हो गया है?

मैं वर्तमान में केवल एक घटना को गति प्रदान करने में सक्षम हूँ उपयोगकर्ता jQuery

साथ
+3

वहाँ एक jQuery और गैर jQuery समाधान यहाँ है: https://github.com/louisremi/jque ry-smartresize – bradt

+0

jquery-smartresize debounced घटनाओं के लिए सुंदर समाधान! – tetri

उत्तर

223

आप .resize() उपयोग कर सकते हैं इस तरह, हर बार चौड़ाई/ऊंचाई वास्तव में बदल जाता है पाने के लिए विंडो का आकार बदलने के लिए शुरू होता है:

$(window).resize(function() { 
    //resize just happened, pixels changed 
}); 

You can view a working demo here, यह नई ऊंचाई/चौड़ाई मान लेता है और आपको देखने के लिए पृष्ठ में अपडेट करता है। याद रखें कि वास्तव में या अंत शुरू होता है, यह आकार बदलने पर बस "होता है" ... कहने के लिए कुछ भी नहीं होता है कि कोई दूसरा नहीं होगा।


संपादित करें: तक टिप्पणियां ऐसा लगता है आप एक "पर अंत" घटना की तरह कुछ करना चाहते हैं, समाधान आप पाया करता है, कुछ अपवादों के साथ (यदि आप माउस-अप के बीच भेद नहीं कर सकते हैं और एक क्रॉस-ब्राउज़र तरीके में एक विराम, अंत के लिए बनाम) के लिए एक ही है। आप कि घटना बना सकते हैं, हालांकि, यह थोड़ा क्लीनर, इस तरह बनाने के लिए:

$(window).resize(function() { 
    if(this.resizeTO) clearTimeout(this.resizeTO); 
    this.resizeTO = setTimeout(function() { 
     $(this).trigger('resizeEnd'); 
    }, 500); 
}); 

आप इस कहीं एक आधार फ़ाइल है हो सकता है, जो कुछ भी आप तो आप उस के लिए बाध्य कर सकते हैं करने के लिए ... चाहते हैं नई resizeEnd घटना आप ट्रिगर कर रहे हैं, इस तरह:

$(window).bind('resizeEnd', function() { 
    //do something, window hasn't changed size in 500ms 
}); 

You can see a working demo of this approach here

+1

यह ब्राउज़र पर निर्भर करता है, कब और कितने आकार का आयोजन किया जाता है: http://www.quirksmode.org/dom/events/resize.html –

+0

@chris_l: मुझे यकीन नहीं है कि यह पृष्ठ अब कितना सटीक है .. नवीनतम फ़ायरफ़ॉक्स में पोस्ट किए गए डेमो को खोलें, यह हर बार आकार में बदलाव होने पर इसे फायर कर रहा है। मेरे पास परीक्षण करने के लिए ओपेरा नहीं है, यह अभी भी अलग हो सकता है, लेकिन वे क्विर्कमोड सुझाव से कम से कम संगत हैं, मैं उन्हें एक नोट भेजूंगा जिसे अद्यतन करने की आवश्यकता है। –

+0

@ निक: हाँ, quirksmode पेज केवल 3.1b2 तक एफएफ को कवर करता है - लेकिन उस तरह के शो, यह ब्राउज़र पर निर्भर करता है ... –

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