访问iframe之外的元素

use*_*093 24 javascript iframe

我有一个文件:1.htmliframe里面.
我想从iframe访问1.html(iframe外部)中存在的元素(比如myelement). 我怎样才能做到这一点? 我试过了:

top.getElementById("myelement")
top.document.getElementById("myelement")  
parent.getElementById("myelement")
parent.document.getElementById("myelement")
Run Code Online (Sandbox Code Playgroud)

但它不起作用!!

Gar*_*ers 41

对于跨源资源,iframe和父文档之间的通信是不可能的.仅当iframe和包含页面来自同一主机,端口和协议时才会起作用 - 例如http://example.com:80/1.htmlhttp://example.com:80/2.html

对于跨源资源,您可以使用window.postMessage两者之间的通信,但这仅在浏览器支持此方法并且您可以控制两种资源时才有用.有关parent.document.getElementByIdMDC页面的更多详细信息:https://developer.mozilla.org/en/DOM/window.postMessage

编辑 - 假设两个资源来自同一个来源

在iframe中,window.parent引用父文档的全局对象,而不是文档对象本身.我相信你需要使用window.postMessage

  • `parent.document.getElementById` 工作正常...谢谢 (2认同)

Sal*_*n A 15

假设相同的原始策略不是问题,您可以使用parent.document访问元素并操纵它们.

演示这里,外框架的源这里,iframe的源这里.