Subject: popup layer, cross browser(IE5.0+ Firefox Netscape Mozilla Opera)
NameSpace: System.Web.UI.WebControls.MzPopupLayer
网页里做脚本控件的时候经常需要一个层的依托,比如自定义的右键菜单层,下拉式菜单层,模拟窗口层,日期选择录入控件层等等,这些层一般的人都是以一个绝对定位的DIV做的,在老版的http://www.microsoft.com/china 下拉菜单就是用这种DIV层,但是这种层有一个很致命的地方,会被页面里的<select>或者<iframe>或者FLASH之类的东东遮挡住(即使将z-index设置得再高也是无用的),因此需要使用别的技术来实现,所以我想到了用<iframe>作层的载体,它可以“盖”住select,iframe,flash。但是用它当然没有象DIV那么简单,所以我特别封装了这么一个基类,供其它的脚本控件调用。
在IE5.5+里有一个特殊的对象 window.createPopup() 这个怪胎东东可以跨框架显示,可以“伸”到网页之外显示,拿来做下拉菜单、右键菜单层简直是太好不过了,所以我把它也封装到我这个类里去了,做出一个统一的接口供调用者调用。
成员属性列表:
.document 层体的document对象,可以做如 document.body 之类的操作
.isOpen 布尔值 指层的显示/隐藏状态
.usePopup 布尔值 指层目前是使用window.createPopup()还是使用iframe
成员方法列表:
.show(left, top, width, height, trigger)
.bind(trigger, width, height)
.hide()
.createStyleSheet([url]) //此方法在Opera里有BUG
2006-03-22 增加对象绑定功能 .bind() 可以使用层与某个对象绑定,智能地在它周围显示
2006-03-22 层的自动隐藏功能实现
2006-03-20 createStyleSheet()方法的实现,可以创建styleSheet对象,并且可以.rules .addRule() .removeRule()操作(已经解决跨浏览器兼容)
2006-03-19 创建此类(前身是MzLayer类,在Calendar3.0里曾使用),iframe和createPopup()的智能使用,hide() show()方法的等