मेरे पास setInterval
एक सेकंड में 30 बार कोड का एक टुकड़ा चल रहा है । यह बहुत अच्छा काम करता है, हालाँकि जब मैं किसी अन्य टैब का चयन करता हूं (ताकि मेरे कोड वाला टैब निष्क्रिय हो जाए), setInterval
किसी कारण से निष्क्रिय अवस्था में सेट हो जाता है।
मैंने यह सरलीकृत परीक्षण मामला बनाया ( http://jsfiddle.net/7f6DX/3/ ):
var $div = $('div');
var a = 0;
setInterval(function() {
a++;
$div.css("left", a)
}, 1000 / 30);
यदि आप इस कोड को चलाते हैं और फिर दूसरे टैब पर स्विच करते हैं, तो कुछ सेकंड प्रतीक्षा करें और वापस जाएं, एनीमेशन उस बिंदु पर जारी रहता है जब आप दूसरे टैब पर स्विच करते थे। यदि टैब निष्क्रिय है तो एनीमेशन 30 सेकंड में दूसरी बार नहीं चल रहा है। यह पुष्टि की जा सकती है कि setInterval
फ़ंक्शन को प्रत्येक सेकंड कहा जाता है - यह उस समय की गणना है, जब टैब निष्क्रिय होता है, तो यह 30 नहीं बल्कि सिर्फ 1 या 2 होगा।
मुझे लगता है कि यह डिज़ाइन द्वारा किया गया है ताकि प्रदर्शन में सुधार हो, लेकिन क्या इस व्यवहार को अक्षम करने का कोई तरीका है? यह वास्तव में मेरे परिदृश्य में एक नुकसान है।
Date
। इतना है कि जब अंतराल जल्दी (इस या अन्य कारणों के लिए) आग नहीं है, एनीमेशन सिर्फ झटका नहीं धीमा हो जाता है।
Date
वस्तु के साथ हैक नहीं किया है कि वास्तव में क्या समय बीत चुका है।