JavaScript 拖放效果 —— 小拖放也有大智慧
2010-09-14 13:25:12 来源:WEB开发网当焦点丢失时应该同时执行Stop程序结束拖放,但当焦点丢失就不能捕获mouseup事件也就是不能触发_fS。
还好ie有onlosecapture事件会在捕获失效时触发,针对这个情况可以这样设置:
addEventHandler(this._Handle,"losecapture",this._fS);
并在Stop程序中移除:
removeEventHandler(this._Handle,"losecapture",this._fS);
但ff没有类似的方法,不过muxrwc找到一个替代losecapture的window.onblur事件,那么可以在Start程序中设置:
addEventHandler(window,"blur",this._fS);
在Stop程序中移除:
removeEventHandler(window,"blur",this._fS);
那ie也有window.onblur事件,那用window.onblur代替losecapture不就可以省一段代码了吗。
接着我做了一些测试,发现基本上触发losecapture的情况都会同时触发window.onblur,看来真的可以。
于是我修改程序用window.onblur代替losecapture,但测试后就出问题了,我发现如果我用alt+tab切换到另一个窗口,拖动还可以继续,但这个时候应该是已经丢失焦点了。
于是我逐一排除测试和程序代码,结果发现如果使用了DTD,那么window.onblur会在再次获得焦点时才会触发。
大家可以用下面这段代码测试:
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script>window.onblur=function(){alert(1)}</script>
在切换到其他程序后,再切换回来才会触发window.onblur,还有几个比较怪异的状况就不说了,反正ie用window.onblur是不理想的了。
Tags:JavaScript 效果 智慧
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接