2012-10-20 11 views
7

क्या म्यूटेक्स (जावास्क्रिप्ट में) साझा करने के लिए ब्राउज़र में दो टैब के लिए कोई तरीका है?म्यूटेक्स लॉक (जेएस) ब्राउज़र के कई टैब के बीच साझा किया गया?

मैं node.js & सॉकेट.io का उपयोग कर वेब-ऐप पर काम कर रहा हूं, और मैं चाहता हूं कि विभिन्न टैब सर्वर के साथ एक कनेक्शन साझा करें। तथाकथित 'नेता' टैब एकमात्र ऐसा है जो कनेक्शन को बनाए रखता है, जबकि बाकी के संदेशों को सभी इस के माध्यम से रिले किया जाता है। अभी, मैं नेता चुनने के लिए एक नेता चुनाव एल्गोरिदम का उपयोग कर रहा हूं, लेकिन अगर कोई एक नया नेता फिर से चुनने के लिए दूसरा या दो लेता है, तो वर्तमान में कोई नीचे चला जाता है, मुझे आश्चर्य है कि क्या करने के लिए एक बेहतर तरीका है वही।

उत्तर

0

प्रत्येक टैब स्वतंत्र है, और इसलिए, ब्राउज़र शायद एक टैब में जेएस को प्रभावित करने या किसी अन्य को संशोधित करने की अनुमति नहीं देते हैं। उपर्युक्त के लिए एक अपवाद तब होता है जब एक टैब जावास्क्रिप्ट का उपयोग करके दूसरे को जन्म देता है।

हालांकि, अगर आप एक Chrome एक्सटेंशन या एक Firefox Addon पर गौर कर सकता है। इनमें से दोनों आप जिस क्षमता को ढूंढ रहे हैं उसे प्रदान करते हैं।

वैकल्पिक कार्यप्रवाह:

आप एक मास्टर-टैब, जो बाकी को खोलता है, window.open() का उपयोग कर सकता है। फ़ंक्शन खोले गए विंडो का संदर्भ देता है, जिसका उपयोग window.postMessage() के संयोजन के साथ किया जा सकता है।

var windowObjectReference = window.open(strUrl, strWindowName[, strWindowFeatures]); 
//windowObjectReference is a reference to the newly created window. 
+1

यह की तरह नहीं है विभिन्न टैब पूरी तरह से से एक-दूसरे ... localStorage पृथक कर रहे हैं: बाहर की जाँच करें सूचना साझा करने का मुख्य उदाहरण उनके बीच टयन। इसलिए यदि वे इसे अनुमति देने जा रहे हैं, तो संचार और साझा करने के लिए उचित चैनल बनाना बेहतर नहीं होगा (बेशक, सभी एक ही डोमेन नीति के अधीन)। एक एक्सटेंशन/एडन के लिए, मैंने सोचा था कि यह विचार करें, लेकिन मैं एक और ब्राउज़र स्वतंत्र समाधान चाहता था। –

+1

हाँ। मैं उसके बारे में भूल गया था। आप https://developer.mozilla.org/en-US/docs/DOM/window.postMessage में देख सकते हैं। लेकिन आपको अभी भी एक और विंडो के संदर्भ को पारित करने की आवश्यकता होगी; –

+0

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

1

विभिन्न पुस्तकालयों कि या तो सीधे ताला लगा की समस्या का समाधान या संदेश टैब, जो आप एक इमारत ब्लॉक के रूप में इस्तेमाल कर सकते हैं के बीच गुजर प्रदान करने की कोशिश कर रहे हैं। एक

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