Наконец, я нашел другое решение для отправки данных на родительский сайт из iframe с помощью window.postMessage(message, targetOrigin);
. Здесь я объясняю, как я это сделал.
Сайт A = http://foo.com Сайт B = http://bar.com
SiteB загружается внутри сайта сайта
Сайт сайта SiteB имеет эту строку
window.parent.postMessage("Hello From IFrame", "*");
или
window.parent.postMessage("Hello From IFrame", "http://foo.com");
Тогда у сайтаA есть следующее Код
// Here "addEventListener" is for standards-compliant web browsers and "attachEvent" is for IE Browsers.
var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
var eventer = window[eventMethod];
var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message";
// Listen to message from child IFrame window
eventer(messageEvent, function (e) {
alert(e.data);
// Do whatever you want to do with the data got from IFrame in Parent form.
}, false);
Если вы хотите добавить соединение безопасности, вы можете использовать это условие if в eventer(messageEvent, function (e) {})
if (e.origin == 'http://iframe.example.com') {
alert(e.data);
// Do whatever you want to do with the data got from IFrame in Parent form.
}
Для IE
Внутри IFrame:
window.parent.postMessage('{"key":"value"}','*');
Снаружи:
eventer(messageEvent, function (e) {
var data = jQuery.parseJSON(e.data);
doSomething(data.key);
}, false);