JavaScript嵌入内容窗口

JavaScript嵌入内容窗口,javascript,Javascript,我正在尝试做一个JavascriptpostMessage,就像你可以对iframe做的那样,但现在要做的是嵌入。我必须使用嵌入式,因为它适用于在IOS设备上加载的应用程序,而且IOS有iframe宽度和高度的bug,所以我需要使用嵌入式 这是加载的,我可以从嵌入中向父级发送postMessage,但不知何故,我无法向嵌入发送postMessage。我尝试的是: document.getElementById("embed").contentWindow.postMessage(...) doc

我正在尝试做一个Javascript
postMessage
,就像你可以对iframe做的那样,但现在要做的是嵌入。我必须使用嵌入式,因为它适用于在IOS设备上加载的应用程序,而且IOS有iframe宽度和高度的bug,所以我需要使用嵌入式

这是加载的,我可以从嵌入中向父级发送postMessage,但不知何故,我无法向嵌入发送postMessage。我尝试的是:

document.getElementById("embed").contentWindow.postMessage(...)
document.getElementById("embed").contentDocument.postMessage(...)
document.getElementById("embed").document.postMessage(...)
document.getElementById("embed").getSVGDocument()  // will return null
当前嵌入设置:

<embed src="URL" id="embed" type="text/html"></embed>    


有什么解决方案吗?

如果要在JS中按Id获取元素,必须在元素中添加Id,以便JS脚本可以找到它:

<embed id="embed" src="URL" type="text/html"></embed>

如果不想使用Id,可以使用getElementsByTagName函数获取元素,如下所示:

//if you only have one element of that type
document.getElementsByTagName("embed")[0].doSomething();

//if you have several embed elements
var embeds = document.getElementsByTagName("embed");
for(var i=0;i<embeds.lenght;i++)
{
   document.getElementsByTagName("embed")[i].doSomething();
}
//如果您只有一个该类型的元素
document.getElementsByTagName(“嵌入”)[0].doSomething();
//如果有多个嵌入元素
var embeds=document.getElementsByTagName(“嵌入”);

对于(var i=0;我很抱歉,但这就是我正在做的。但是
contentWindow
是未定义的。我已经选择了正确的元素,这不是问题所在。事实上,现在您的代码对Id问题没有问题。我在回答中添加了一些关于contentWindow属性的内容,它似乎是iFrame元素所独有的。