2012-09-04 16 views
5

के बाद खिड़की के अस्तित्व का पता लगाने के तो मैं खिड़की एक पर तत्व और एक नई विंडो (इसे कहते खिड़की बी) खोला है पर इसपुनः लोड

var myWindow = false; 
$('someelement').click(function(){ 
    var myWindow = window.open('url', 'name', 'width=100,height=200'); 
}); 

तो उपयोगकर्ता क्लिक कर लगता है ...

लेकिन फिर मान लें कि विंडो ए पुनः लोड हो गया है ... इसके कारण, var myWindow अब गलत पर सेट है ... लेकिन फिर विंडो बी अभी भी खुला है .... विंडो विंडो के बाद विंडो ए से विंडो बी के अस्तित्व का पता कैसे लगा सकता हूं ए को पुनः लोड किया जाता है

मुझे पता है कि आप यह कर सकते हैं:

var hasWindow = window.open('', 'name'); 

और यह खिड़की बी के लिए एक संदर्भ वापस आ जाएगी अगर यह पहले से ही खुला है ..

लेकिन फिर यदि खिड़की बी अभी तक खोला नहीं है, यह बजाय एक खिड़की खोलने, जो अवांछनीय है ट्रिगर किया जाएगा

यदि विंडो बी खुला नहीं है, तो उस स्थिति में एक नई विंडो खोलने के बिना यह विंडो विंडो का संदर्भ कैसे प्राप्त कर सकता है? (कुकी चाल का उपयोग किए बिना)

उत्तर

1

कुकीज में संग्रहीत किए बिना थोड़ा सा राज्य रखने का सबसे अच्छा तरीका आपकी खिड़की पर कुछ सहेजना है। नाम। यह केवल एक स्ट्रिंग के साथ काम करेगा, हालांकि, यदि आप केवल एक बिट डेटा से अधिक चाहते हैं तो आपको इसे JSON स्ट्रिंग के रूप में सहेजने की आवश्यकता होगी।

पढ़ने के लिए:

var keptState; 
if (window.name !== "") { 
    keptState = JSON.parse(window.name); 
} 

लिखने के लिए:

state = { 
    "popupOpened" : true, 
    "popupName" : "otherWindowName" 
}; 
window.name = JSON.stringify(state); 

ताज़ा के दूसरी ओर (या यहां तक ​​कि साइट से बाहर नेविगेट करने और पीछे), यह आपके चर आप रखेंगे चाहता था। यदि आप वास्तव में दूसरी विंडो का संदर्भ चाहते थे, हालांकि, आप इसके लिए स्वयं ही हैं। मैं यह निर्धारित करने के किसी भी तरीके से नहीं सोच सकता कि यह वास्तव में है। अगर कोई कहें तो किसी ने पॉपअप विंडो को बंद कर दिया है तो यह एक समस्या होगी।

कम से कम इस तरह, आप यह पता लगा सकते हैं कि आपने इसे खोला है या नहीं। फिर यदि आप वास्तव में पॉपअप के बिना उस विंडो की आवश्यकता होती है तो आप एक पॉपunder कर सकते हैं। जब मैं ऐसा करता हूं तो यह हमेशा थोड़ा सा छायादार लगता है, लेकिन यह संभवतः ऐसा करने का सबसे अच्छा तरीका है जिसे आप पूछ रहे हैं।

var myWindow = window.open('', 'otherWindowName'); 
myWindow.blur(); 
window.focus(); 
संबंधित मुद्दे