iframe的小结以及几点疑问

星期一, 6月 9th, 2008 475 次访问

在做web项目的时候,一直没有用过iframe,对iframe的一些特性知之甚少。无奈在最近的开发项目中要用到它,碰了一路的钉子,我服了。现在把开发中遇到的问题和大家分享一下,望对过往者有所帮助. 为了说明方便以下把引用iframe的主页面称之为page,把iframe所加载的页面称之为iframe_page. 1.cookie兼容性问题 这个问题主要出现在IE下,当page的域名与iframe_page的域名不同时,在ie的正常安全设置下,iframe_page的cookie存在问题。具体表现在服务器端取不到ifame_page的cookie.如果把ie的cookie安全性设置到最低的话.一切OK.也就说在iframe中cookie在ie中被认为是不安全的,不知道为什么不安全。难道是ie浏览器本身的难言之隐吗?为什么ff不认为这种情况有安全问题呢?是不是ff的安全机制要好于ie呢?希望在这个方面有所特长的朋友可以为和解答这个问题.问题:为什么iframe中的cookie的存在隐私安全问题? 2.onload问题 这个问题也是一个安全问题,当page与iframe_page的域名不同的时候:在ff下面在iframe_page里面可以直接frameElementr的onload方法.但在ie下面frameElement的onload方法是不可以调用.onload方法在ie下面返回是一个空值.经常在ff下开发测试的朋友要注意如果域名不完全相同,还是别想通过onload来执行page里面的js了,ie下面是行不通的. 3。dom结构相互访问问题 由于出于浏览器安全性的考滤,除非page与frame_page的域名是一样的,两个dom之间才能通过js进行相互控制.不然的话还是要发点心思了.如果二个域名在同一个主域下面.只要在相互访问前把域名改成相同的主域名就可以Ok了,改主域名代码:document.domain=test.com; 如果两个域名完全不同,听说要通过falsh进行通信处理,这个比较复杂。我也没研究明白,请高手指点。 4.在一个页面中,如果显示一个隐藏的div.会使document的高度变高,那为什么当再次把这个层隐藏时为什么document的高却没有变化呢?我如何取得再次隐藏层之后的实际文档高度呢? help!过往高手请赐教,感激不尽.