[覆盖select]
在为了在IE6下可以覆盖select,我加入了2个放法createIframe和removeIframe。分别是在onmouseover事件里创建一个iframe和在onmouseout里销毁iframe。
createIframe:function(elem){ var layer = document.createElement('iframe'); layer.tabIndex = '-1'; layer.src = 'javascript:false;'; elem.parentNode.appendChild(layer); layer.style.width = elem.offsetWidth + 'px'; layer.style.height = elem.offsetHeight + 'px'; }
首先需要使用负的tabIndex值把iframe排除在tab序列之外,否则用户可能会使用键盘导航到它,这就乱了套了,所以需要将tabIndex值设置为负的。另外,还要设置src,设置该值是为了避免在SSL页面上出现问题.在IE中,没有设置src的iframe将会自动装载about:blank。IE将此视为不安全页面,而且会产生一个警告对话框,内容是“该页面包含安全和非安全的内容”。为了避免这个问题,可以将src设置为“javascript:false;”。(该段摘自<<JavaScript精髓>>) 而避免iframe在页面所造成的混乱,所以在onmouseout中将iframe销毁,而不对其进行隐藏。
使用说明
由于时间上的问题,所以没有封装的太好,主要是在CSS上,最好根据我所设置的那样设置,感觉有些乱。希望大家能够理解,而修改也不会太难.因为我自带一个css()函数,只要稍加设置就可以了。使用例子:
magnifier.init({ cont : document.getElementById('magnifier'), img : document.getElementById('magnifierImg'), mag : document.getElementById('mag'), scale : 3 });
cont为container缩写,指的是装载原始图像的div; img则是放大的图像; mag则为magnifier缩写,是指放大框; scale为比例值,设置的值越大放大越大,但是这里有个问题就是如果不可以整除时,会产生些很小的白边,目前不知道如何解决; 至于浏览框和原始图像为m.cont.getElementsByTagName('img')[0]和m.cont.getElementsByTagName('div')[0],所以建议在装载图像的div中最好只放一个div和img。
PS:刚刚给源码也加了注释了,有些没有的,大概在下面的代码说明会有.this指针搞的好混乱~希望大家能看的明白什么回事..越用this越觉得不太好用啊..诶.>~搞了1个下午,累,休息下先哈。
经典论坛交流: http://bbs.blueidea.com/thread-2954073-1-1.html
本文链接:http://www.blueidea.com/tech/web/2009/7087.asp
出处:蓝色理想
责任编辑:bluehearts
上一页 JavaScript图片放大效果详解 [2] 下一页
◎进入论坛网页制作、WEB标准化版块参加讨论,我还想发表评论。
|