如何postmessage HTMLIFrameElement?

时间:2017-04-14 11:39:08

标签: javascript iframe postmessage

我遇到问题是使用HTMLIFrameElement方法将postMessage对象从父网站传递到iframe(位于不同的域中)。

这是我已经尝试过的代码:

var frame = document.getElementById('myHTMLIFrameElement');
frame = JSON.parse(JSON.stringify(frame));
event.source.postMessage(frame, "*");

不幸的是,JSON.parse / JSON.stringify似乎不是处理HTMLIFrameElement对象的正确方法。你能否告诉我如何正确地通过HTMLIFrameElement对象?

1 个答案:

答案 0 :(得分:0)

根据我所知,将DOM元素解析为JSON并没有做任何有用的事情。 由于postMessage()是窗口对象的一部分,因此您可以尝试使用框架的窗口对象,该窗口对象位于iframe的contentWindow属性下。

所以你可以尝试类似的东西:

var frame = document.getElementById('myHTMLIFrameElement');
frame.contentWindow.postMessage( "stuffYouWantToSendToTheIframe", '*' );

然后在iframe内的脚本中:

window.addEventListener('message', function( event ) {
   // handle message
});