2011-12-28 12 views
8

मैं easyXDM उपयोग करने के लिए मूल दस्तावेज़ और बच्चे iframe के बीच संवाद की कोशिश कर रहा हूँ से लोड के बीच संवाद की easyXDM का उपयोग करना (- अमेज़न एक अलग डोमेन से भरी हुई)। iframe src एक OAuth हस्ताक्षर किए यूआरएल है और माता पिता के दस्तावेज है कि लोड के साथ संवाद करने के लिए निम्न कोड है:मूल दस्तावेज़ और बच्चे iframe एक अलग डोमेन (अमेज़न)

socket = new easyXDM.Socket({ 
    remote: "http://localhost:56789/hitch.html", /* parent document */ 
    remoteHelper: "http://localhost:56789/easyXDM/name.html", 
    onMessage: function(message, origin){ 
     alert("Received '" + message + "' from '" + origin + "'"); 
    }, 
    onReady: function() { 
     socket.postMessage("Yay, it works!"); 
    } 
}); 

ऊपर कोड दस्तावेज़ के सिर हिस्से में रखा है।

माता-पिता में (hitch.html):

var transport = new easyXDM.Socket(/** The configuration */{ 
    local: "/easyXDM/name.html", 
    swf: "/easyXDM/easyxdm.swf", 
    onMessage: function(message, origin){ 
     transport.postMessage("This is a message received from " + location); 
    } 
}); 

जब मैं मूल दस्तावेज़ के अंदर amazonS3 से बच्चे iframe लोड, easyXDM src को "http सेट के साथ बच्चे iframe के भीतर एक और iframe पैदा कर रही है: // लोकलहोस्ट: 5678 9/hitch.html? xdm_e = ... "। इससे चक्र में पूरी चीज दोहराई जा सकती है - माता-पिता फिर से बच्चे आईफ्रेम लोड करने की कोशिश कर रहे हैं।

मैं फ़ायरफ़ॉक्स 9.0 पर परीक्षण कर रहा हूं जिसमें पोस्ट मैसेज समर्थन है। वास्तविक संदेश ठीक से भेजे जा रहे हैं और मैं संदेश बॉक्स देख सकता हूं। जब easyXDM.socket आरंभ लेकिन यह बिल्कुल भी प्रभावित नहीं लगता है इस के अलावा, यह भी मूल दस्तावेज़ में एक "यूआरएल अपरिभाषित है या खाली है" त्रुटि फेंकता है ...

धन्यवाद,

+0

मैं एक ही confusion.Have आप इस समस्या का समाधान है? – xiaohan2012

+1

nope :(। मुझे पोस्टमेसेज के आस-पास एक और सरल रैपर मिला जो पुराने ब्राउज़र के लिए स्थान हैश और नए ब्राउज़र के लिए पोस्टमेसेज का उपयोग करता है। एक अतिरिक्त लाभ के रूप में, कोड easyXDM भूलभुलैया के विपरीत छोटे और आसानी से समझने योग्य है। कोड यहां है: http://www.onlineaspect.com/2010/01/15/backwards-compatible-postmessage/ – ivymike

उत्तर

8

मैं आपको लगता है अभी तर्क को पीछे की ओर मिला है। प्रलेखन काफी स्पष्ट रूप कहते हैं:

"easyXDM का उपयोग कर जब आप पहली बार उपभोक्ता दस्तावेज़ लोड और फिर जाने easyXDM प्रदाता लोड करते हैं।"

"उपभोक्ता" मूल दस्तावेज है, और easyxdm "प्रदाता" लोड करता है जो कि बाल आइफ्रेम है।

रेफरी - https://github.com/oyvindkinsey/easyXDM

+1

मैं इसमें घंटों तक फंस गया था और फिर मैंने बस अपना जवाब पढ़ा और मेरे मूल दस्तावेज़ से 'iframe' हटा दिया। इसके अलावा, मैंने ' सॉकेट की कंटेनर की संपत्ति 'div' की 'id' पर है और यह काम करती है। इस लाइन के वास्तविक अर्थ को समझाने के लिए धन्यवाद। मुझे लगता है कि ओपी को इसे बिंदु को उत्तर के रूप में चिह्नित करना होगा। :) –

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