मेरे पास एक टाइमर है जो हर सेकेंड की गणना करता है। जब तक उपयोगकर्ता मेरी साइट के 3 या 4 टैब खोलता है तब तक यह बहुत अच्छा काम करता है, जिस बिंदु पर नवीनतम टैब का टाइमर डबल या ट्रिपल स्पीड चला जाता है। मैं वर्तमान में केवल IE8 में बग को पुन: पेश कर सकता हूं। मैं पहले setInterval का उपयोग कर रहा था, और फ़ायरफ़ॉक्स में भी बग को पुन: उत्पन्न कर सकता था।मेरे सेटटाइमआउट की गति क्यों बढ़ती है जब मेरे साइट पर एकाधिक टैब खुलते हैं?
मैं वास्तव में एफबीजेएस (फेसबुक की जावास्क्रिप्ट) का उपयोग कर रहा हूं, इसलिए मैं कुछ छद्म कोड दे दूंगा।
function countDown() {
...
setTimeout(function() { countDown() }, 1000);
}
countDown();
हालांकि, क्या मैं वास्तव में तलाश कर रहा हूँ अधिक सैद्धांतिक है। मुझे पता है कि ब्राउज़र सेट इंटरवल के साथ "पकड़ो" को आजमा सकते हैं और खेल सकते हैं, लेकिन एकाधिक टैब सेटटाइमआउट के लिए इस व्यवहार का कारण कैसे बना सकते हैं?
वाह, कार्यों को यादृच्छिक नाम देने से चाल चल रही है! यह कैसे संभव है कि विभिन्न विंडो में जावास्क्रिप्ट एक-दूसरे को प्रभावित कर सके? – lamplighter
विचित्र, है ना? मुझे लगता है कि यह कुछ ऐसा होना चाहिए जैसा कि मैं कह रहा था, ब्राउजर के गलतियों में कहीं भी "चिकनाई" कोड केवल नाम से (अच्छी तरह से, शायद साइट + नाम से) और अलग-अलग टैब/विंडो के बीच अंतर नहीं कर रहा है। वास्तव में कहीं भी एक बग रिपोर्ट लायक हो सकता है। – chaos
यह PHP के बिना वैकल्पिक समाधान हो सकता है: http://stackoverflow.com/questions/6112671/settimeout-speeds-up-with-multiple-tabs/6112864#6112864 – namuol