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

标签 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');
}

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

可能出了什么问题?

Update

我发现除了使用 postMessage 之外,我还可以访问 javascript 函数中的内容。 现在的问题是 - 我还没有找到实现此目标的方法。

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

最佳答案

这将获取您的 iFrame 的标题。

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

关于javascript - 如何使用window.postMessage动态嵌入iframe?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30888429/

相关文章:

javascript - d3 v4 scaleTime 不接受日期对象或整数

javascript - 使用 javascript 从 iframe 中的数组填充选择选项下拉列表

c++ - PostMessage() 来模拟 C++ 中的输入?

javascript - 两个 AngularJS 服务之间的消息传递

javascript - 未捕获的语法错误 : Failed to execute 'postMessage' on 'Window' : Invalid target origin 'my_page' in a call to 'postMessage'

javascript - 一行中的多个严格相等比较

javascript - 属性 'contentWindow' 在 HTMLElement 类型上不存在 - 从一台服务器发送到另一台服务器

javascript - 如何通过更改 css 高度和宽度来制作小加载圆?

javascript - 防止 iframe 加载的特定 JS 在我的网站上运行

javascript - onclick v 没有 onclick;如何在不点击的情况下获得结果