2015-11-10 6 views
0

Вот код в IFRAME с src="example.com"PostMessage не получил от IFRAME

<script> 

    var domain = "http://example2.com"; 

    function redirectRequest(){ 

     console.log("window.opener",window.opener); // NULL 
     console.log("window.top",window.top); // script_name 
     console.log("window.parent",window.parent); // script_name 

     opener.postMessage("redirect", domain); //fails because null 
     //top and parent also do not work BUT do not display errors 
    } 

</script> 

и вот код работает в example2.com, который содержит приемник PostMessage (а также содержит IFRAME):

function message_listener(event) { //nothing is ever received... 

    console.log("event received",event); 

    var data = event.data; 

    console.log("data received",data); 

} 


if (window.addEventListener) { 
    window.addEventListener("message", message_listener); 
} else { 
    // IE8 
    window.attachEvent("onmessage", message_listener); 
} 

Любая идея, что может быть отключено? Большое спасибо ...

+0

Может быть, вы должны смотреть на это: http://stackoverflow.com/questions/935127/how-to-access-parent-iframe-from -javascript – laruiss

+0

@laruiss это междоменная область. Будет ли это работать? – Fane

+0

замените нож на родительский. – antoniOS

ответ

2

Для iframe вам необходимо заменить открыватель на родительский. заменить это:

opener.postMessage("redirect", domain); 

к этому:

window.parent.postMessage("redirect", domain); 
+0

OP заявила, что попробовала родителя. – Quentin

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