在做富客户端的web界面时,为了达到某些特定功能和效果,往往需要使用到flash,activex等插件元素。随之而来的问题也不可避免。当页面存在resizable,draggable等元素时,它们的功能可能会受到影响。究其原因,在于flash,activex元素和页面中如div元素显示层次的问题,它们通常具有较高的优先级而显示在页面的顶层。这样一来,用来实现resizable效果的基本事件如mousedown,mouseup,mousemove就会因为鼠标被遮盖而失效。解决办法:
1.falsh情况:
将flash的宿主标签如object的wmode(window mode)参数值设置为:opaque或transparent
2.activex插件(IE浏览器):
function mouseDown(obj){
layoutMovingObj=obj;
if(document.all) {
layoutMovingObj.setCapture();
}
}
function mouseUp() {
if(!layoutMovingObj) {return;}
if(document.all) {
layoutMovingObj.releaseCapture();
}
layoutMovingObj=null;
}在resizable元素上添加上面两个事件,这样就可以保证事件不再丢失。