2011-12-28 2 views
8

Я пытаюсь использовать easyXDM для связи между родительским документом и дочерним iframe (загружается из другого домена - амазонка). IFrame ЦСИ является OAuth подписанный URL и имеет следующий код для связи с родительским документом, который загружает его:Использование easyXDM для связи между родительским документом и дочерним iframe, загруженным из другого домена (amazon)

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); 
    } 
}); 

Когда я загружаю ребенок IFRAME из AmazonS3 внутри родительского документа, easyXDM создает другой IFRAME внутри дочернего фрейма с СРКОМ установлен на «HTTP: // localhost: 56789/hitch.html? xdm_e = ... ". Это заставляет все повторяться в цикле - с родителем, снова пытающимся загрузить дочерний iframe и так далее.

Я тестирую Firefox 9.0 с поддержкой postMessage. Фактические сообщения отправляются правильно, и я вижу сообщения. Кроме этого, он также бросает «URL не определен или пустой» ошибка в вышестоящем документе при инициализации easyXDM.socket но это, кажется, не влияет на что-нибудь еще ...

Спасибо,

+0

У меня есть один и тот же confusion.Have вы решили эту проблему? – xiaohan2012

+1

nope :(Я нашел еще одну простую оболочку postmessage, которая использует хэш местоположения для старых браузеров и postmessage для новых браузеров. В качестве дополнительного преимущества код крошечный и легко понятный, в отличие от лабиринта easyXDM. Код находится здесь: http: /www.onlineaspect.com/2010/01/15/backwards-compatible-postmessage/ – ivymike

ответ

8

Я думаю, что вы «Мы только что вернули логику. В документации сказано совершенно ясно:

«При использовании easyXDM первой загрузке потребителя документа, а затем пусть easyXDM загрузить поставщика.»

«Потребитель» является родительским документом, а easyxdm загружает «поставщика», который является дочерним iframe.

исх - https://github.com/oyvindkinsey/easyXDM

+1

Я застрял часами в этом, а затем просто прочитал ваш ответ и удалил 'iframe' из моего родительского документа. Кроме того, я добавил' container' свойства сокета к 'id'' div', и он сработал. Спасибо, что объяснили фактическое значение этой строки. Я думаю, что OP должен отметить это как ответ, совпадающий с точкой. :) –

 Смежные вопросы

  • Нет связанных вопросов^_^