2012-11-16 7 views
9

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

मैं यह जांचना चाहता हूं कि टैब पहले से ही खुला है या फिर अपडेट किए गए कार्ट के साथ एक और टैब खोलने के बजाय इसे दूसरी आइटम के साथ दोबारा दोहराएं।

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

तो बस आप कैसे जांचते हैं कि कोई ब्राउज़र टैब पहले से खुला है या नहीं?

एक समाधान के साथ संपादित: पहले:

var tab = window.open('http://google.com','MyTab'); 

तब:

if(tab) { 
    var tab = window.open('http://yahoo.com','MyTab'); 
} 
+3

मुझे लगता है कि तुम सब करने की है खिड़की नाम है। – Hemlock

+0

यदि आप पहले से ही 'var win = window.open ('http://google.com', 'tab') खोले हैं तो आप टैब पर फ़ोकस भी सेट कर सकते हैं; अगर (जीत) { win.focus(); } ' – sohaiby

उत्तर

13

window.open निम्नलिखित मानकों हैं: var tab = window.open(url, name, specs, replace) जब तक आप एक ही name यूआरएल कि विंडो/टैब में लोड किया जाएगा का उपयोग करें।

यदि आप वर्णनकर्ता/संदर्भ (tab ऊपर) रखना चाहते हैं, तो window.open रिटर्न देता है, जब उपयोगकर्ता पृष्ठ को रीफ्रेश करता है, तो वह संदर्भ गुम हो जाता है।

+0

अरे यह काम करता है। मेरे प्रश्न को अपडेट करना – BobB

+0

आदर्श रूप से मैं इसे उस पृष्ठ से आगे रख सकता हूं जो उपयोगकर्ता के रूप में है, साइट पर विभिन्न पृष्ठों पर हैं। – BobB

+0

@BobB यदि यह आपके प्रश्न का उत्तर देता है, तो इसे चिह्नित करने के लिए बाईं ओर स्थित टिक-चिह्न पर क्लिक करें। =) –

1

मुझे लगता है कि आपका सर्वश्रेष्ठ दांव session storage/local storage हो सकता है, लेकिन यह केवल नए ब्राउज़रों में काम करता है।

+0

मुझे लगता है कि यदि आप उस पृष्ठ से परे बने रहना चाहते हैं, तो मैं सही हूं यदि उपयोगकर्ता चालू है। धन्यवाद – BobB

0

आपको केवल खोले गए टैब के संदर्भ को सहेजने की आवश्यकता है जिसे आप कुछ आईडी से जोड़ सकते हैं जो आपको समझ में आएगा ... फिर जब आपको इसे दोबारा खोलने की आवश्यकता है तो वहां से सहेजे गए संदर्भ का उपयोग करें जिससे आप पहुंच सकते हैं window.opener से आपके माता-पिता या सलामी बल्लेबाज विंडो। यह जानने के लिए कि जब बच्चे की खिड़की बंद होती है तो एक डिफ़ॉल्ट ब्राउज़र ईवेंट "पहले से लोड" होता है जिसे कॉल किया जाता है जब आपके माता-पिता में आपके संदर्भ ऑब्जेक्ट से विंडो को हटाया जा सकता है ताकि आप जान सकें कि आपको इसे फिर से खोलना है न कि इसे ध्यान में रखें।

0

मैं प्रत्येक चरण से गुजर गया और मैं कुछ बिंदुओं के साथ आया। मैंने इसे आईई पर परीक्षण किया। यदि आप यूआरएल (एचटीपी: //www.google.com) जैसे यूआरएल का उपयोग करते हैं तो यह अपेक्षित काम नहीं करता है और यदि आप अपने डोमेन पेज का उपयोग करते हैं तो यह काम करता है।

हालांकि यह फ़ायरफ़ॉक्स और क्रोम के लिए अच्छा काम करता है।

निम्न उदाहरण काम नहीं करता:

<script type="text/javascript"> 
    function myfunction1() { 
     window.open('http://www.google.com', 'f'); 
    } 
    function myfunction2() { 
     window.open('http://www.yahoo.com', 'f'); 
    } 
</script> 
<body> 
    <form id="form2" runat="server"> 
    <div> 
     <a href="#" onclick='myfunction1();'>myfunction1</a> 
     <a href="#" onclick='myfunction2();'>myfunction2</a> 
    </div> 
    </form> 
</body> 
</html> 

और निम्न उदाहरण काम करता है:

<script type="text/javascript"> 
     function myfunction1() { 
      window.open('WebForm1.aspx', 'f'); 
     } 
     function myfunction2() { 
      window.open('WebForm2.aspx', 'f'); 
     } 
</script> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <a href="#" onclick='myfunction1();'>myfunction1</a> 
     <a href="#" onclick='myfunction2();'>myfunction2</a> 
    </div> 
    </form> 
</body> 
</html> 
संबंधित मुद्दे