2014-04-24 164 views
0

我想要做一个Javascript postMessage就像你可以做一个iframe,但现在嵌入。我必须使用嵌入,因为它是用于在IOS设备上加载的应用程序,并且由于IOS具有iframe宽度和高度的缺陷,所以我需要使用嵌入。JavaScript嵌入内容窗口

这是加载和从内嵌入我可以做一个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>  

这个任何解决方案?

回答

1

如果要通过标识在JS得到一个元素,你必须把一个id在你的元素,因此JS脚本可以找到它:

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

如果你不想使用标识,你可以使用的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(); 
} 

关于contentWindow财产,好像这只是一个iFrame属性。所以你必须使用另一个属性或切换回iFrame。更多这里:

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#Scripting

+0

对不起,但这就是我正在做的。但'contentWindow'未定义。我已经选择了正确的元素,这不是问题。 – Niels

+0

事实上,现在你的代码对于Id问题是可以的。我已经添加了一些关于contentWindow属性的东西,这似乎是iFrame元素独有的。 – PiTiNiNjA