2015-01-29 14 views
5

मैं एक आईफ्रेम और मेरी मुख्य वेबसाइट के बीच संवाद करने के लिए postMessage() प्राप्त करने का प्रयास कर रहा हूं। हालांकि MDN पर example code में दिए गए सटीक वाक्यविन्यास का उपयोग करके, मुझे Undefined is not a function त्रुटि के साथ प्रस्तुत किया जा रहा है। मैंने कई चीजों की कोशिश की है, जैसे जावास्क्रिप्ट के अंदर आईफ्रेम शुरू करना और इसे मेरे पृष्ठ पर जोड़ना, लेकिन यह मुझे एक ही त्रुटि के साथ छोड़ दिया। मेरे आईफ्रेम का चयन करने के लिए अलग चयनकर्ताओं के लिए समान है।postMessage() त्रुटि उत्पन्न करता है "अपरिभाषित कोई फ़ंक्शन नहीं है"

मैं निम्नलिखित जावास्क्रिप्ट कोड है:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('.editor').postMessage("A", "domain here"); 
    }); 

    function receiveMessage(event) 
    { 
     if (event.origin !== "domain here") 
      return; 

     // Do something 
    } 

    window.addEventListener("message", receiveMessage, false); 
</script> 

स्क्रिप्ट ऊपर पेज पर अपने iframe, जिसे लगता है कि करने के लिए एक संदेश भेजने की कोशिश करता है:

<iframe src="domain here/frameListener.html" class="editor"></iframe> 

यह तो एक समारोह है receiveMessage किसी भी संदेश को मुख्य वेबपृष्ठ के जवाब के रूप में भेजने के लिए पकड़ने के लिए। अंतिम लेकिन कम से कम नहीं, मैंने this question में दिए गए उत्तरों का प्रयास किया है: लेकिन इससे मेरी समस्या ठीक नहीं हुई। इसलिए यह एक डुप्लिकेट नहीं है।

मैं इस त्रुटि संदेश से कैसे छुटकारा पा सकता हूं?

$('.editor').get(0).contentWindow.postMessage("A", "domain here"); 

इसके अलावा, आप iframe की contentWindow संपत्ति का उपयोग करने की जरूरत है:

+1

'' postMessage' Window' वस्तु की एक विधि है, जबकि '$ ('। संपादक')' एक jQuery वस्तु – hindmost

+0

@hindmost धन्यवाद, मैं Jivings जवाब में दिए गए उदाहरण के लिए अपने कोड बदल दिया है है, हालांकि उसने मेरी समस्या को ठीक नहीं किया। –

उत्तर

5

postMessage एक jQuery समारोह ताकि आप और वास्तविक window डोम तत्व प्राप्त करने की आवश्यकता है कि पर यह फोन नहीं है। यहाँ MDN डॉक्स से एक अंश है:

otherWindow.postMessage(message, targetOrigin, [transfer]); 

otherWindow

अन्य विंडो का संदर्भ; इस तरह का एक संदर्भ प्राप्त हो सकता है, उदाहरण के लिए, सामग्री का उपयोग करके iframe तत्व की विंडो विन्डो गुण, window.open द्वारा ऑब्जेक्ट ऑब्जेक्ट, या window.frames पर नाम या संख्यात्मक अनुक्रमणिका द्वारा।

+0

तो यदि आप जावास्क्रिप्ट विधियों का उपयोग करना चाहते हैं तो आप 'JQuery' का उपयोग करके कोई तत्व नहीं चुन सकते हैं? वह लंगड़ा है: उत्तर देने के लिए धन्यवाद! इसका परीक्षण करेंगे और आपका जवाब स्वीकार करेंगे। –

+0

दुर्भाग्यवश, मेरे कोड में आपके कोड को बदलने के बाद मुझे एक ही त्रुटि संदेश के साथ छोड़ दिया गया है। –

+0

@ केविनवॉर्न अपडेटेड। आपको 'contentWindow' प्रॉपर्टी – Jivings

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