2010-07-22 13 views
26

आप की तरह एक खिड़की खोलते हैं:जावास्क्रिप्ट विंडो में आगे बढ़ने पर पहले से खिड़की लाओ।

window.open ("url","winName","location=0,width=300,height=214"); 

हैं winName पहले से ही यह सिर्फ विंडो में URL परिवर्तन खोलने है। यह ठीक है लेकिन अगर वह विंडो वर्तमान विंडो के पीछे है तो अधिकांश उपयोगकर्ताओं को इसका एहसास नहीं होगा और लगता है कि यह अभी नहीं खुल रहा है।

क्या कोई तरीका है कि यदि खिड़की पहले से ही खुली है, तो यह इसे सामने लाती है?

+0

[जावास्क्रिप्ट का उपयोग करना, मैं किसी दूसरे खिड़कियों कोड से अन्य विंडो के शीर्ष पर सामने से एक पहले से ही विद्यमान खुली खिड़की लाने करते हैं?] (Http के संभावित डुप्लिकेट: // stackoverflow.com/questions/2530572/using-javascript-how-do-i-bring-an-already-existing-open-window-to-the-front-on) –

+2

@ एंडी उस प्रश्न में उपयोगकर्ता पूछ रहा है कि कैसे सलामी बल्लेबाज/पैरेंट विंडो को बच्चे/खुले खिड़की से सामने लाएं। मैं पूछ रहा हूं कि इसे रिवर्स में कैसे किया जाए। बच्चे/खुली खिड़की को पैरेंट/ओपनर विंडो से सामने लाएं। यदि इसका कोई औचित्य हो। –

+0

क्षमा करें। मैंने पहले इस सवाल को देखा है, हालांकि - मुझे अभी यह नहीं मिल रहा है :-) –

उत्तर

2

window.focus() प्रश्न में खिड़की पर लागू चाल चलाना चाहिए।

+0

क्या आप मुझे एक उदाहरण दे सकते हैं जिसकी मैंने कोशिश की: 'editDaySched = window.open (...); संपादित करें DaySched.focus(); क्रोम में लेकिन यह काम नहीं लग रहा था। धन्यवाद। –

+0

यदि आप फोकस() इनलाइन को कॉल कर रहे हैं जैसे कि यह काम नहीं करेगा क्योंकि विंडो अभी तक मौजूद नहीं है। आपको क्या करना चाहिए खुली खिड़की में एक फ़ंक्शन है (यहां संपादित करेंडेड किया गया है) जो ऑनलोड ईवेंट आग लगने पर window.focus() को कॉल करता है। आप सलामी बल्लेबाज के साथ ओपनर से अवधारणा का सबूत कर सकते हैं, एक सेटटाइमआउट के साथ संपादन, 5, या 6 सेकंड के बाद संपादित करें। – Robusto

44

अद्यतन: यह क्रोम (21+) के बाद से काम नहीं किया है। कामकाज बंद/फिर से खोलना है।

window.open() विधि एक ऐसी वस्तु देता है जो नई विंडो का प्रतिनिधित्व करती है। तुम बस यह window.focus() की जरूरत है:

var w = window.open ("url","winName","location=0,width=300,height=214"); 
w.focus(); 

या बस:

window.open("url","winName","location=0,width=300,height=214").focus(); 
+2

यह केवल आईई में काम करेगा यदि पॉपअप विंडो में एक ही एप्लिकेशन होस्ट में अन्य ब्राउज़र टैब नहीं खुलते हैं। यहां तक ​​कि यदि पॉपअप विंडो अन्य टैब पर केंद्रित है, तो यह शायद आईई 9 में चुपचाप असफल हो जाएगी, शायद पुराने संस्करण भी। सौभाग्य से (?), टैब के समूह से पॉपअप टैब को अनदेखा करने से सही होस्ट विंडो संदर्भ रहता है, और यह अपेक्षित व्यवहार को फिर से शुरू कर देगा। –

+0

क्रोम पर काम - thnks – Guihgo

7

अद्यतन: यह Chrome के बाद से काम नहीं किया है (21+)। कामकाज बंद/फिर से खोलना है।

सावधान रहें, क्योंकि जब आप एक नई विंडो खोलते हैं, तो सलामी बल्लेबाज विंडो में अभी भी कुछ कोड निष्पादित किया जा सकता है, हो सकता है कि इनमें से कुछ कोड इसे फोकस दें। आप देखेंगे कि आपकी नई विंडो सामने कैसे खुलती है और अचानक पीछे जाती है, इसलिए, इन मामलों में एक अच्छा विचार है, ताकि थोड़ी देर बाद नई विंडो पर फोकस करने के लिए टाइमआउट सेट किया जा सके, जब सभी सलामी बल्लेबाज विंडो में जावास्क्रिप्ट निष्पादित किया जाता है, तो आप इसे इस तरह से कर सकते हैं:

setTimeout(function(){window.focus();},1000); 

होने के नाते 1000 मिलीसेकंड की राशि प्रतीक्षा करने के लिए, और विंडो खोली खिड़की का नाम है। उदाहरण के लिए आप बॉडी ऑनलोड में खुले विंडो में भी इस कोड का उपयोग कर सकते हैं।

+0

धन्यवाद! इसने मेरे पास एक लंबी अवधि की समस्या हल की। –

7

.focus() के किसी भी रूप का उपयोग करने का सुझाव देने वाले विभिन्न उत्तरों सभी ब्राउज़रों में काम करने जा रहे हैं।

यह मुख्य रूप से सक्रिय रूप से अग्रभूमि करने के लिए अपने पॉपअप विज्ञापनों को आगे बढ़ाने से छायादार विज्ञापन नेटवर्क को रोकने के लिए काम कर रहे ब्राउज़रों के कारण, दिन में वापस, लेकिन किसी भी अधिक नहीं काम करता था।

मोज़िला फ़ायरफ़ॉक्स में विशेष रूप से (अपने संस्करण के आधार पर) वहाँ एक कॉन्फ़िगरेशन सेटिंग की डिफ़ॉल्ट द्वारा चालू है कि खुद ध्यान केंद्रित से अन्य विंडो (जैसे पॉपअप) बंद हो जाता है।

आप इस सेटिंग को about:config पृष्ठ में देख सकते हैं (ध्यान से चलें!)

dom.disable_window_flip: true

अगर मैं ~ "allow_raise_or_lower_windows *

अन्य ब्राउज़रों कुछ इसी तरह लागू कर सकते हैं, लेकिन काफी बस यदि 1 की तरह कुछ सही ढंग से इस सेटिंग के लिए इस्तेमाल किया नाम से जाना याद प्रमुख ब्राउज़रों में डिफ़ॉल्ट रूप से .focus() का उपयोग अवरुद्ध करता है, फिर इसे कॉल करने का प्रयास करने में बहुत अधिक उपयोग नहीं होता है।

नतीजतन, मैंने जो काम देखा है, वह यह देखने के लिए है कि खिड़की मौजूद है या नहीं, और पहले से बंद नहीं है ... और अगर इसे बंद कर दें, तो अपनी इच्छित विंडो लोड करें।

function closePopupIfOpen(popupName){ 
    if(typeof(window[popupName]) != 'undefined' && !window[popupName].closed){ 
    window[popupName].close(); 
    } 
} 

जब अपने पॉपअप खोलने बात की संभावना है कि यह पहले से ही खुला (और अन्य विंडो के पीछे burried) है तो आप इस समारोह से पहले आप अपने पॉपअप को खोलने का प्रयास कॉल कर सकते हैं।

closePopupIfOpen('fooWin'); 
var fooWin = window.open('someURL', 'foo', '...features...'); 

निश्चित रूप से दोष यह है कि अगर वहाँ उस खिड़की में कुछ भी "महत्वपूर्ण" (उदाहरण के लिए आंशिक रूप से भरे गए फार्म) था यह नष्ट हो जाएगा है।

+0

क्रोम में काम करता है लेकिन ऐसा नहीं लगता है कि इसका आईई 11 – Samuel

3

मैं (बटन) HTML तत्व को

onclick="myWin = window.open('','winName','location=0,width=300,height=214'); myWin.focus()" 

जोड़ने और फिर जे एस के माध्यम से URL बदल कर इस तय की।

+0

में कोई प्रभाव नहीं है क्रोम में काम करता है अन्य ब्राउज़रों में परीक्षण नहीं किया गया है – relipse

0

आप jQuery का उपयोग कर सकते हैं:

myPopup = window.open(url, "Title","menubar=no, status=no, scrollbars=no, menubar=no, width=800, height=800"); 
$(myPopup).focus(); 
+1

jquery फोकस मानक फोकस() विधि के लिए सिर्फ एक रैपर है इसलिए कोई लाभ नहीं है। इसके अलावा ओपी ने एक jQuery समाधान के लिए नहीं पूछा था – Liam

संबंधित मुद्दे