Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
ифреймы… как-то я сомневаюсь, что они прям уж так необходимы для организации виджетов. Js-api и дивы милее сердц
pm({
target: window.frames[frame.id],
type: "register",
data: {id:frame.id},
url: frame.contentWindow.location
});var target = undefined;
for (var i=0; i<window.frames.length;i++){
if (window.frames[i].frameElement == frame){
target = window.frames[i];
break;
}
}
pm({
target: target,
type: "register",
data: {id:frame.id},
url: frame.contentWindow.location
});В яндексе можно найти множество решений этой проблемы, но большинство из них обладают одной проблемой: они не поддерживают возможность менять размеры окна когда содержимое iframe и родительский элемент находятся на разных доменах.
iframe.contentWindow.opener = {
postMessage: function (data, domain){};
};
window.opener.postMessage('data', '*');
function onMessage(evt, domain) {}; // Обработчик postMessage, в осле evt == evt.data
window._onMessage = onMessage;
window.execScript(
'Private onMessage\n' +
'Class PostMsg\n' +
'Public Sub postMessage(data, domain)\n' +
'Call onMessage(data, domain)\n' +
'End Sub\n' +
'End Class\n' +
'Set onMessage = window._onMessage\n' +
'Set window._onMessage = New PostMsg', 'vbscript');
document.domain = document.domain;
postmessage.freebaseapps.com
Автоматическая кросс-доменная установка высоты Iframe