पूरे ब्राउज़र को फ्रीज़ करने से बचने के लिए (विलंब फ़ंक्शन के साथ) आप setTimeOutकिसी फ़ंक्शन को 20000 मिलीसेकंड के अलावा निष्पादित करने के लिए उपयोग कर सकते हैं।
सभी को setTimeoutएक दूसरे के ठीक बाद निष्पादित किया जाता है। प्रत्येक एटमी मिलीसेकंड पर एक फ़ंक्शन निर्धारित है। प्रत्येक लूप को एटोमेट पैरामीटर 20000 (20 सेकंड) तक बढ़ाया जाता है। उसके बाद आपका पृष्ठ निष्क्रिय रहता है और निर्धारित समय पर सेट-आउट कार्य निष्पादित किए जाते हैं।
ध्यान दें setTimeout("window.open('" + site + "')", atTime);। हम ऐसा नहीं कर सकते setTimeout(window.open(site), atTime);क्योंकि सेट टाइमआउट के बीच फ़ंक्शन का मूल्यांकन निष्पादन समय पर किया जाता है और चर siteमें लूप का अंतिम मान होगा। तो हम एक setTimeout("window.open('xxx')", atTime);xxx करते हैं, जहां लूप में बदलाव होता है। इस तरह से वेरिएबल को एक्जीक्यूट कमांड में सेट किया जाता है। (आशा है कि मैं स्पष्ट हूँ)
यहाँ स्क्रिप्ट है:
<script>
function openWindow(){
var x = document.getElementById('a').value.split('\n');
atTime = 0;
for (var i = 0; i < x.length; i++) {
if (x[i].indexOf('.') > 0) {
site = x[i];
if (x[i].indexOf('://') < 0) { site = 'http://' + x[i]; }
setTimeout("window.open('" + site + "')", atTime);
atTime += 20000;
}
}
}
</script>