У меня есть Iframe, который показывает контент со стороннего сайта и отправляет postMessage обратно родителю, когда его контент загружен.Код работает, когда публикуется на рабочем сервере (я думаю, из-за CORS-настроек), но не при разработке на моем локальном компьютере.В нем говорится:
"Не удалось выполнить 'postMessage' для 'DOMWindow': предоставленный целевой источник ([Внешний сайт]) не соответствует источнику окна получателя ([Мой локальный хост])."
Возможно ли, чтобы Iframe общался с родителем без использования postMessage?Например, если родитель добавляет триггер addEventListerner ("load") в Iframe?
Вот несколько тестовых кодов:
<div id="parentDiv"></div>
<script type="text/javascript">
function LoginToExternalSite() {
// Doing 1-3 AJAX-calls to the 3:rd party site to
// make sure the application are allowed to use it.
// If logged in, it calls LoadIframe.
LoadIframe();
}
function LoadIframe(){
var div = document.getElementById("parentDiv");
var iframe = {};
iframe = document.createElement("iFrame");
iframe.id = "infra3dapi";
iframe.style.height = '100%';
iframe.style.width = '100%';
iframe.style.border = 'none';
iframe.style.overflow = 'hidden';
iframe.src = "https://example.com";
div.appendChild(iframe);
iframe.onload = function() {
iframe.contentWindow.parent.postMessage("Hello", 'https://example.com');
};
}
$(document).ready(function() {
$(window).on("message", function(e) {
console.log("Messaged recieved.");
});
LoginToExternalSite();
});