学习中遇到点小问题,这个是在网上找到的,先备忘。
1.父页面中获取IFRAME的WINDOW对象
获得了window对象后,就可以调用iframe页面中定义的方法等。
IE:可以通过iframeId、windows.iframeId、windows.iframeName、window.frames[iframeId]、window.frames[iframeName]、window.frames[iframeIndex]和iframeElement.contentWindow这6种方法来获取iframe的window对象。
FF:可以通过windows.iframeName、window.frames[iframeName]和iframeElement.contentWindow这3种方法获取window对象。
总结:为了兼容大多数浏览器,应使用iframeElement.contentWindow来获取。见如下代码:
1
|
var
iframe
'iframe1'
).contentWindow;
|
ie6和ie7还可以使用document.frames["iframe
标准浏览器:通过iframeElement.contentDocument来引用iframe的doument对象,但是IE浏览器不支持,确切说应该是IE
IE:用window.frames[iframeId].document来获取
因为document是window的一个子对象,你也可以先获取iframe的window对象,再通过window.document来引用。
总结:应使用以下两方法来获取,见代码:
1
2
3
4
5
6
7
8
9
10
|
"text/javascript"
>
//获取iframe的document对象
//方法1:先获取window对象再通过window.docuemnt
var
iframe
'iframe1'
).contentWindow.document;
//方法2:分支判断
function
getIframeDom(iframeId)
return
document.getElementByIdx_x(iframeId).contentDocument
}
|
parent:父页面window对象
window.parent
top:顶层页面window对象
window.top
self:始终指向当前页面的window对象(与window等价)
如果窗口是顶级窗口,那么parent==self==top
根据这个可以防止网页被嵌套:
1
2
3
|
if
(window!=window.top){
window.top.location.href=window.location.href:
}
|
兼容性:适用于所有浏览器,当拿到了父页面的window对象后,就可以访问父页面定义的全局变量和函数。
注:chrome要求在服务器环境下进行iframe操作。