2010-07-08 16 views
12

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

E.g. मैं tab1 में एक जावास्क्रिप्ट चलाने के लिए चाहता हूं जो किसी अन्य टैब का शीर्षक पा सकता है। असल में मुझे इसकी आवश्यकता है ताकि मैं window.open विधि का उपयोग किए बिना अपने वर्तमान पृष्ठ में href के कारण खोला गया एक टैब पहचान सकूं। मैं चाहता हूं कि एक साधारण हाइपर लिंक है जो वर्तमान पृष्ठ के समान डोमेन से संबंधित एक पृष्ठ खोलता है (पृष्ठ को एक नए टैब में खोला जाना चाहिए)। अब मैं वर्तमान टैब से इस नए टैब तक पहुंचने में सक्षम होना चाहता हूं।

उत्तर

10

आप HTML5 cross-window messaging का उपयोग कर सकते हैं ... लेकिन यह थोड़ी सी अत्याधुनिक है।

यहां तक ​​कि उस स्थिति में आपको शायद जावास्क्रिप्ट के साथ टैग 'क्लिक' ईवेंट को हाइजैक करने की आवश्यकता होगी और विंडो को स्वयं खोलें ताकि आपको संदेश पोस्ट करने के लिए नई विंडो ऑब्जेक्ट तक पहुंच प्राप्त हो।

+2

ऐसा लगता है कि हमने पिछले छह वर्षों में बहुत से कदम आगे बढ़ाए हैं :) http://caniuse.com/#feat=x-doc-messaging – Loupax

13

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

+6

हाँ..मैं जानता हूँ। लेकिन, जैसा कि मैंने पहले उल्लेख किया था, नया टैब/विंडो एक ही डोमेन से संबंधित होगा, इसलिए मैं संभवतः अपनी वेबसाइट से बैंक खाता विवरण "चोरी" नहीं करूंगा। वैसे भी आपके त्वरित उत्तर दोस्तों के लिए धन्यवाद ... लेकिन इसके लिए एक समाधान खोजने की जरूरत है। - धन्यवाद फिर से – vamyip

+0

क्या आप खुले टैब सर्वर-साइड को ट्रैक करके एक समान प्रभाव बना सकते हैं? जैसे मान लीजिए कि आपने जानबूझकर एक नए टैब में खोलने के लिए कुछ लिंक कोड किए हैं, तो आप जानते हैं कि उपयोगकर्ता के दो टैब खुले हैं। इसके अलावा, यदि आपके पास दोनों पक्षों से प्रत्येक कुछ सेकंड में क्लाइंट साइड जेएस (AJAX) "चेक इन" है, तो इंटर-टैब संचार सर्वर के माध्यम से रिले किया जा सकता है। जैसे शायद टैब 1 "चिड़ियाघर" ऑब्जेक्ट को संपादित कर रहा है और इसका नाम "बोस्टन" से "डेनवर" में बदलता है। टैब 2 "बोस्टन चिड़ियाघर पशु" है जहां आप चिड़ियाघर में जानवरों को बदल सकते हैं। टैब 2 को AJAX अद्यतन के साथ "डेनवर चिड़ियाघर पशु" में अपडेट किया जाता है। –

7

यदि आप जावास्क्रिप्ट के साथ खोले गए थे तो पृष्ठ नई विंडो/टैब तक पहुंच सकता है और पृष्ठ वास्तव में एक ही डोमेन में है।

तुम इतनी

var win = window.open("/path_to_page"); 

तरह विंडो/टैब खोल सकते हैं तो फिर आप इससे पहले कि आप उपयोग कर सकते हैं लोड करने के लिए पेज के लिए इंतज़ार करना होगा जैसे शीर्षक।

win.onload = function(){ alert(win.document.title); }; 
+1

बस सुनिश्चित करें कि दोनों पृष्ठों में एक ही मूल है या आपको निम्न त्रुटि मिल जाएगी: 'मूल के साथ फ्रेम को अवरुद्ध करें "http: // x" मूल के साथ फ्रेम तक पहुंचने से "http: // y"। प्रोटोकॉल, डोमेन और बंदरगाहों का मिलान होना चाहिए – supercoco

8

Vamyip,

एक कुकी जो एक ही डोमेन में किसी भी पेज के लिए सुलभ है स्थापित करने की कोशिश करें। अन्य पृष्ठों पर, यह जांचने के लिए जावास्क्रिप्ट टाइमर का उपयोग करें कि क्या कुकी मान बदल गया है और जब आप इसका मूल्य उपयोग कर सकते हैं और कोई कार्रवाई कर सकते हैं।

यह मेरे लिए काम किया।

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