2013-01-21 9 views
14

window.postMessage में दूसरा विशेषता डोमेन निर्दिष्ट करती है जिस पर मेरा संदेश भेजा जा सकता है। क्या यह निर्दिष्ट करने का कोई तरीका है कि यह सभी सबडोमेन पर लागू है।पोस्ट कैसे करें सभी सबडोमेन पर लागू संदेश

बातें करने की कोशिश की:

iframe.contentWindow.postMessage('The message to send.','http://*.wordpress.com'); 
iframe.contentWindow.postMessage('The message to send.','http://wordpress.com'); 

उत्तर

6

नहीं, संभव नहीं।

एकमात्र परिदृश्य जिसमें आप स्वयं की मदद कर सकते हैं, यदि आप जानते हैं कि लक्ष्य iframe उत्पत्ति के एक ज्ञात, सीमित सेट (उदाहरण के लिए "http://a.wordpress.com", "http: // b .wordpress.com "और" http://c.wordpress.com ")। इस मामले में, बस प्रत्येक उत्पत्ति के लिए एक पोस्ट मैसेज अनुरोध करें, क्योंकि उनमें से केवल एक सफल होगा और अन्य विफल हो जाएंगे।

4

सभी डोमेन नामों को जानने के बिना यह संभव है। बस एक संदर्भ URL मिलता है और आप वास्तव में उस से मूल मिलती है:

var parentOrigin = document.referrer.match(/^.+:\/\/[^\/]+/)[0]; 

अब, केवल एक चीज है इस विशिष्ट है कि क्या यूआरएल मापदंड (wordpress.com साथ समाप्त होता है) और हाँ अगर मेल खाता है की जांच करने के लिए अनुमति देते हैं संदेश है डोमेन।

केवल तब तक काम करता है जब उपयोगकर्ता कहीं और iframe के अंदर नेविगेट करता है: रेफरर बदल जाता है। हालांकि, रेफरर को आईफ्रेम के localStorage में सहेजा जा सकता है, इसलिए आपके पास संभावित डोमेन की एक सूची है और Ivan Zuzak

+0

द्वारा प्रस्तावित सूची से प्रत्येक डोमेन को संदेश भेज सकता है यह अच्छी तरह से काम करता है और मूल पृष्ठ का पूरा यूआरएल देता है, iframe के भीतर कोई नेविगेशन होने से पहले मूल्य को पकड़ लें। – dougwig

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