ऐसा लगता है कि आधुनिक ब्राउज़रों window.focus
किसी मौजूदा विंडो के लिए आप की अनुमति नहीं देते। या कम से कम, यह उस विंडो फोकस नहीं देगा। (आईई 9 वास्तव में टैब को झपकी देगा, लेकिन अधिकांश अन्य ब्राउज़र केवल इसे लोड करते हैं लेकिन कोई संकेत नहीं देते कि उपयोगकर्ता का ध्यान नई विंडो पर खींचा जाना चाहिए।)
इसलिए, एक समाधान जो खुद को प्रस्तुत करता है वह विंडो को पहले बंद करना है, और उसके बाद तुरंत इसे फिर से खोलें। उदाहरण के लिए, declare the following function के लिए:
window.openOrFocus = function(url, name) {
if (!window.popups)
window.popups = {};
if (window.popups[name])
window.popups[name].close();
window.popups[name] = window.open(url, name);
}
अब, आप HTML इस जैसे लिख सकते हैं:
<a href="javascript:void(0);" onclick="openOrFocus('http://jsfiddle.net/k3t6x/2/', 'window1')">Window 1</a><br />
<a href="javascript:void(0);" onclick="openOrFocus('http://jsfiddle.net/KR6w3/1/', 'window2')">Window 2</a><br />
चूंकि यह खिड़की पहले बंद कर देता है, यह मज़बूती से नव निर्मित चाइल्ड विंडो को फोकस देता है।
यह समाधान भी window.popups
नाम स्थान का उपयोग करता है, तो जावास्क्रिप्ट नमूने में इस बात का प्रयोग का नाम बदलने के लिए यदि आप popups
नाम के एक समारोह हो या उन्हें ऐसा इसके साथ टकरा गए हैं।
कैविट: यह पोस्ट-बैक के बाद काम नहीं करता है। ऐसा इसलिए है क्योंकि एक बार जब आप वर्तमान पृष्ठ से दूर जाते हैं, तो यह अब बच्चे की खिड़कियों का मालिक नहीं है। इसलिए, यह अब उन्हें बंद नहीं कर सकता है। हालांकि, यह केवल target
विशेषता का उपयोग करने के सामान्य (गैर-केंद्रित) व्यवहार में कमी करता है।
में परीक्षण किया: फ़ायरफ़ॉक्स 4, क्रोम 11, आईई 9
JsFiddle डेमो:http://jsfiddle.net/aqxBy/7/
तो खिड़की लोड हो रही है, बस दिख रही नहीं है? क्या यह सही पृष्ठ लोड कर रहा है? क्या यह हर ब्राउज़र में एक ही व्यवहार है? मुझे लगता है कि यह एक विंडो प्रबंधक चिंता है, ऐसा कुछ नहीं जो आप जावास्क्रिप्ट से कर सकते हैं, लेकिन मैं अब के लिए अभिनीत हूं, मैं साथ चलना चाहता हूं। – jcolebrand