2012-08-24 16 views
6

के बीच संचार मेरे पास एक HTML पृष्ठ (main.html) एक ही डोमेन में window.open ("newtab.html") विधि के साथ जावास्क्रिप्ट का उपयोग कर एक नया टैब खोल रहा है।ब्राउज़र टैब

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

नया टैब से

मैं की तरह कुछ चाहते हैं, लेकिन मैंने "ko"

var w = window.opener; 
if (w) { 
    w.postMessage("hi", "http://10.150.10.43"); 
} else { 
    alert("ko"); 
} 

सबसे अच्छा तरीका क्या संदेश (एक ही डोमेन में मुख्य एक करने के लिए माध्यमिक टैब/विंडो से भेजने के लिए है)?

आपको बहुत बहुत लुका

+0

संभव डुप्लिकेट [मैं एक एचटीएमएल 5 अनुप्रयोग के साथ दो ब्राउज़र विंडो को नियंत्रित कर सकते हैं?] (Http://stackoverflow.com/questions/5277482/can-i-control-two-browser-windows-with-one -html5-app) – josh3736

+1

हे लुका, उत्तर को चिह्नित करने के लिए मत भूलना! इवान प्रतिनिधि अंक का हकदार है। :-) –

+0

हां, आप सही हैं :) –

उत्तर

12

कि अजीब बात है धन्यवाद। window.open("newtab.html") के साथ एक नई विंडो खोलने से नई खुली खिड़की को window.opener के माध्यम से सलामी बल्लेबाज को संदर्भित करने की क्षमता मिलनी चाहिए।

वैसे भी, एक ही डोमेन पर दो विंडो के बीच संचार के लिए कई अन्य विकल्प हैं। मुझे लगता है कि निम्नलिखित दो सबसे आसान लागू करने के लिए कर रहे हैं:

  1. उपयोग localStorage। यदि आप नई टैब विंडो में स्थानीय स्टोरेज में कुछ कुंजी के तहत कुछ डेटा स्टोर करते हैं, तो ओपनर विंडो को स्टोरेज इवेंट मिलेगा। यदि आप एक हैंडलर के साथ ईवेंट को पकड़ते हैं, तो आप नई टैब विंडो से लिखे गए स्थानीय स्टोरेज से डेटा पढ़ सकते हैं। ध्यान दें कि ईवेंट केवल तभी निकाल दिए जाते हैं जब दोनों पृष्ठ एक ही डोमेन पर हों, और यदि वास्तव में प्रश्न में दो विंडो हैं (डेटा को उसी विंडो में नहीं निकाल दिया जाता है जो डेटा लिखता है)। इसे कैसे करें इस बारे में अधिक जानकारी के लिए - उदाहरण के लिए देखें: http://diveintohtml5.info/storage.html

  2. साझा वेब श्रमिक का उपयोग करें। एक वेब वर्कर एक जेएस स्क्रिप्ट है जिसे पृष्ठभूमि में एक अलग धागे पर निष्पादित किया जाता है। साझा वेब कर्मचारी एक विशेष प्रकार के वेब श्रमिक होते हैं जो किसी भी संख्या में मूल दस्तावेज़ों को एक कार्यकर्ता के साथ संवाद करने की अनुमति देते हैं। तो, आप ओपनर विंडो और नई टैब विंडो के बीच संदेशों को रिले करने के लिए कार्यकर्ता का उपयोग कर सकते हैं। एक श्रमिकों के साथ संवाद करने के लिए एपीआई पोस्ट मैसेज एपीआई के समान ही है। इसे कैसे करें इस बारे में अधिक जानकारी के लिए - उदाहरण के लिए देखें: http://www.sitepoint.com/javascript-shared-web-workers-html5/

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