如何使用window.postMessage来动态嵌入iframe?

时间:2015-06-17 10:06:01

标签: javascript iframe postmessage

我的页面上有多个动态帧。所有iframe都在同一个域下。 例如

<iframe src="data.php?id=1"> </iframe>
<iframe src="data.php?id=2"> </iframe>
<iframe src="data.php?id=3"> </iframe>

正如您所看到的,iframe链接到同一页面但ID不同。

所以我使用for循环将数据发送到iframe。(代码如下)

var iframes = document.getElementsByClassName('iframe');
for(var i = 0; i < iframes.length; i++)
{
    iframes[i].contentWindow.postMessage("getName","http://localhost/data.php");
}

我不确定在postMessage函数的origin参数中放入什么(即第二个参数)。

在iframe上我有这个代码来处理消息。

window.addEventListener("message", receiveMessage, false);
function receiveMessage(event)
{
    //event.source.postMessage("hi", event.origin);
    console.log('Message received');
}

但我在控制台中没有看到任何内容。

什么可能是错的?

  

更新

我发现我可以访问javascript函数中的内容,而不是使用postMessage。 现在的问题是 - 我还没有想办法如何实现这一目标。

我想通过javascript访问iframe的textnode元素的title

1 个答案:

答案 0 :(得分:1)

这将获得iFrame的标题。

var iframes = document.getElementsByClassName('iframe');
for(var i = 0; i < iframes.length; i++){
    iframes[i].contentWindow.document.getElementsByTagName('title')[0].innerHTML;
}