मुझे पता है कि MessageEvent
में source
संपत्ति है जो विंडो ऑब्जेक्ट है जो संदेश भेजती है। अब यह जानकारी कैसे प्राप्त करें मुख्य दस्तावेज़ में iframe (और निश्चित रूप से संदेश आगमन पर मुख्य दस्तावेज़ के भीतर) उस विशेष संदेश का स्रोत था? event.source
विंडो ऑब्जेक्ट पर location.href
को देखने के लिए केवल उपलब्ध विकल्प है और फिर मिलान करने वाले सभी जांच करने के लिए सभी iframes लूप करें? क्या होगा यदि मुख्य दस्तावेज़ में एक ही स्रोत url के साथ iframes हैं?संदेश को किस क्रॉसडोमेन iframe से जांचें (postMessage) आया था?
उत्तर
यदि आप location.href
क्रॉस-डोमेन आईफ़्रेम/विंडो की संपत्ति को पढ़ने का प्रयास करते हैं, तो यह एक अपवाद फेंक देगा क्योंकि यह उसी मूल नीति का उल्लंघन करता है। आप उस संपत्ति पर लिख सकते हैं, लेकिन आप पढ़ सकते हैं। और यहां तक कि यदि यह काम करेगा, तो आपको एक ही यूआरएल समस्या के साथ कई आईफ्रेम के साथ समस्या होगी, जैसा आपने अनुमान लगाया था।
वैसे भी, आप क्या कर सकते हैं - किसी प्रकार के संदेश भेजने के लिए प्रोटोकॉल स्थापित करना। दूसरे शब्दों में, iframe में जो संदेश एक्स प्राप्त करता है, आप मूल दस्तावेज़ में सभी iframes पर पुन: प्रयास करेंगे और प्रत्येक आईफ्रेम को पर एक संदेश भेजेंगे "क्या आपने मुझे संदेश एक्स भेजा था?" और आप ऐसे प्रश्नों का उत्तर देने के लिए सभी iframes प्रोग्राम करेंगे। बेशक, आपको सभी संदेशों में अद्वितीय आईडी संलग्न करनी होंगी ताकि आप जान सकें कि कौन सा आईफ्रेम स्वीकार करता है कि उसने कौन सा संदेश भेजा है।
मुझे लगता है कि आप के बारे में क्यों संदेश के रिसीवर पता है, जो इस था की जरूरत है बारे में सोचना है, और क्यों यह काफी आपको लगता है कि इस (event.source
) करने के लिए सिर्फ संदर्भ के लिए पता करने के लिए नहीं है? अगर प्रेषक को कुछ जानकारी ज्ञात है - तो प्रेषक केवल इस जानकारी को संदेश में पहले स्थान पर भेज सकता है।
आईफ्रेम को प्रत्येक पहल पर एक अद्वितीय आईडी पास करने के लिए एक और अधिक प्रभावी तरीका है, और पैरेंट फ्रेम पर वापस पोस्ट करते समय उन्हें उस आईडी का उपयोग करना है।
मैं जो कर रहा हूं वह क्रोम में अब तक काम करता है, किसी पृष्ठ पर सभी iframes पर पुनरावृत्ति करना है और window
ऑब्जेक्ट्स पर पहचान तुलना करना है।
window.addEventListener('message', function(e) {
if(e.origin === 'https://www.example.com') {
var iframes = document.getElementsByTagName('iframe');
for(var i = 0; i < iframes.length; i++) {
if(e.source === iframes[i].contentWindow) {
// Do stuff with iframes[i]
}
}
}
}
इस पार ब्राउज़र अभी तक जांच नहीं की है, इसलिए अपने लाभ भिन्न हो सकते हैं।
- 1. नाम 'atoi` कहां से आया था?
- 2. iframe गतिशील ऊंचाई क्रॉस-डोमेन jquery.ba-postmessage का उपयोग कर
- 3. एचटीएमएल 5 - क्रॉस ब्राउज़र Iframe PostMessage - माता-पिता बच्चे को संचार
- 4. html5 postMessage मेरे लिए क्यों काम नहीं कर रहा है?
- 5. SendMessage बनाम PostMessage + WaitForSingleObject
- 6. जांचें कि क्या sp_send_dbmail सफल था
- 7. जावा एनोटेशन बनाम .NET गुण: जो पहले आया था?
- 8. सिल्वरलाइट से क्रॉसडोमेन कॉल कैसे करें?
- 9. PostMessage के माध्यम से एक स्ट्रिंग कैसे भेजें?
- 10. RabbitMQ किस भाषा में लिखा गया था?
- 11. कैसे बताएं कि सॉकेट को किस इंटरफ़ेस से संदेश प्राप्त हुआ?
- 12. jQuery: iframe dom से iframe dom को एक्सेस करना
- 13. आईएफ उपयोगकर्ता को कैसे जांचें फेसबुक पेज को पहले ही पसंद आया है?
- 14. Google क्रोम में क्रॉसडोमेन सेटिंग्स
- 15. बैकबोन आरईएसटी एपीआई सिफारिश/क्रॉसडोमेन
- 16. आईओएस: क्या यह निर्धारित करने का कोई तरीका है कि प्रेषक कौन सा UIControlEvent आया था?
- 17. मैं कैसे निर्धारित करूं कि उपयोगकर्ता एएसपीनेट में कहां से आया था?
- 18. iframe
- 19. iframe
- 20. iFrame
- 21. जांचें कि किस तरह कास्टेबल/सबक्लास
- 22. एक IFRAME
- 23. utils.php कहां से आया, TinyMCE हैक
- 24. डेल्फी में मुख्य धागे से टीटीएचड को संदेश कैसे भेजें?
- 25. सर्वर से क्लाइंट से संदेश को संदेश भेजें
- 26. स्क्रीन को किस तरह से रखते हुए, किस तरह से?
- 27. SslStream.AuthenticateAsClient पर संदेश (संदेश को बुरी तरह स्वरूपित किया गया था)
- 28. iFrame
- 29. जांचें कि क्या मूल विंडो iframe है या नहीं
- 30. ईमेल संदेश से मूल संदेश को बाहर निकालना
यदि आपके पास प्रेषक का नियंत्रण नहीं है, तो निश्चित रूप से। मेरे पास प्रत्येक पर कई छिपे हुए Vimeo एम्बेड वाले पृष्ठ हैं। जब उपयोगकर्ता उनमें से किसी एक को प्रदर्शित करने के लिए बटन पर क्लिक करता है, तो मुझे तब तक इंतजार करना पड़ता है जब तक कि मुझे "play" संदेश भेजने से पहले फ्रेम से "तैयार" संदेश प्राप्त न हो जाए। लेकिन अगर आपका जवाब सही है, तो मुझे यह जानने का कोई तरीका नहीं है कि आईफ्रेम ने कहा था कि यह तैयार था! यह मेरे लिए एक बहुत बड़ी निगरानी की तरह लगता है; मैं यह नहीं समझ सकता कि यह किसी भी तरह से सुरक्षा में सुधार कैसे करता है, और आईफ्रेम पेज पर नियंत्रण नहीं है, यह अविश्वसनीय मानक उपयोग केस है। –