क्या आप ब्राउजर को लॉक किए बिना जावास्क्रिप्ट निष्पादन को रोक सकते हैं? जिस तरीके से आप सामान्य रूप से निष्पादन रोकेंगे, वह अनंत while()
-loop करना है, लेकिन फ़ायरफ़ॉक्स के मामले में, यह लूप समाप्त होने तक ब्राउज़र को लॉक करता है।ब्राउजर को लॉक किए बिना जावास्क्रिप्ट निष्पादन रोकें
इस पर आपका क्या लेना है?
मैं HTML का उपयोग कर अपने खुद के संवाद को लागू करने के window.confirm()
ओवरराइड करने के लिए कोशिश कर रहा हूँ। मैं ऐसा कर रहा हूं इसलिए मुझे मौजूदा कोड को बदलने की ज़रूरत नहीं है (यह एक बहुत बड़ा कोड-बेस है)।
मुझे उपयोगकर्ता-इनपुट की अनुमति देने के लिए निष्पादन को रोकने में सक्षम होना चाहिए; करने के लिए बदले में मानक की पुष्टि समारोह की तरह एक बूलियन वापसी करता है:
if (confirm("..."))
{
// user pressed "OK"
}
else
{
// user pressed "Cancel"
}
अद्यतन
; यह setTimeout()
या setInterval()
का उपयोग करके नहीं किया जा सकता है क्योंकि ये फ़ंक्शंस उन्हें अतुल्यकालिक रूप से दिए गए कोड को निष्पादित करते हैं।
'setTimeout' और' setInterval' * * निष्पादित नहीं कोड एसिंक्रोनस रूप से, वे गिनती नीचे और फिर कॉलबैक फ़ंक्शन को एक कतार में जोड़ें जिसे थ्रेड निष्क्रिय होने पर कहा जाता है। फ़ंक्शन स्वयं सिंक्रनाइज़ेशन चलाते हैं। –
यह भी देखें: http://stackoverflow.com/questions/2056747/javascript-puzzle-to-solve-window-confirm-divconfirmstrmessage –
@ एंडी ई - 'window.setTimeout' (और' window.setInterval') एसिंक्रोनस कॉलबैक बनाएं । सामान्य कार्यक्रम प्रवाह इसे कॉल करने के तुरंत बाद जारी रहता है और टाइमर लंबाई के आधार पर कॉलबैक बाद की तारीख में निष्पादित किया जाता है। तथ्य यह है कि जावास्क्रिप्ट एकल-थ्रेडेड और कॉलबैक है, एक बार जब इसे निष्पादित करना शुरू हो गया है, तो निष्पादन से अन्य कोड को अवरुद्ध करता है, यह इसे अतुल्यकालिक होने से नहीं रोकता है। –