如果页面中包含框架,则每个框架都拥有自己的window对象,并且保存在frames集合中,并可以通过数值索引或者name索引进行访问。如果frames的length为0,则代表这个页面中不包含iframe。
判断页面是否被包含在iframe中则需要使用到top这个属性,top对象始终指向最高(最外)层的框架,也就是浏览器窗口。
所以通过如下的判断:
window.top == window
就可以判断当前的页面是否在iframe中。但是,如果在引入iframe时,name属性设为top,则会覆盖top属性,导致这个判断出错。
另一种方法是通过frameElement属性进行判断,如果frameElement属性为null,则说明该页面不在iframe中。
经验证,top方法在IE6下可以使用,frameElement不可用。