Popup窗口在XP+SP2下面受到限制
在微软XP SP2对IE6兼容性的官方文档《Compatibility in Internet Explorer 6 for Windows XP Service Pack 2》中,微软口口声声说对窗口对象属性的安全限制中,不会影响Popup窗口。可事实上,Popup窗口并没有逃脱被限制的厄运。这下,使用Popup窗口技术实现的菜单就有都遭殃了。
Popup窗口是IE提供的一个独特的浏览器扩展功能,关于它的详细介绍和作用,可以参看"使用Popup窗口创建无限级Web页菜单"一文。在当我们的XP系统升级到SP2后,Popup窗口默认被设置了一下限制:
1、Popup窗口不能超出浏览器的内容区域,就是IE窗口显示网页的有效区域;
2、Popup窗口中生成的子Popup窗口只能限制在其父Popup窗口之下。
第一个限制很讨厌,不过还好基本不太影响Popup做为菜单的使用。第二点就比较郁闷了,如果是菜单,出现子菜单的情况太常见了。而如果子菜单只能显示在父菜单之下,虽然在大多数情况下貌似也没啥大问题,可是当菜单在页面的最右边时,第三级子菜单在空间不够用的情况下,向父菜单的左边展开,就麻烦了。这时这个子菜单将被父菜单覆盖住,能不能露脸全看造化了。
当然这个限制也是可以在IE的安全设置中进行修改,就是把当前站点添加为信任站点,上面两个对Popup的限制就没有了。不过这基本上没有太大价值,任何一个网站或系统都不能如此依赖用户的设置。
由此一来,这个Popup的可用性已经很低了,除非万不得已不推荐使用。连最新版的Sharepoint中的Popup菜单都换成了DIV模拟的了。当然这也是为了更好的兼容其它浏览器,Popup即时没有这个问题也是IE独家提供的。但是DIV的致命问题是不能跨frame(包括iframe),如果一定要做跨frame的提示窗口或菜单,还是必须顶着麻烦上Popup。