学习了 cloudgamer 写的拖动和缩放效果,呵呵,受益匪浅。
所以自己也就研究了一下,需要学习的地方很多了。
一,
var BindAsEventListener = function(object, fun) { var args = Array.prototype.slice.call(arguments).slice(2); return function(event) { return fun.apply(object, [event || window.event].concat(args)); } } function addEventHandler(oTarget, sEventType, fnHandler) { if (oTarget.addEventListener) { oTarget.addEventListener(sEventType, fnHandler, false); } else if (oTarget.attachEvent) { oTarget.attachEvent("on" + sEventType, fnHandler); } else { oTarget["on" + sEventType] = fnHandler; } }; function removeEventHandler(oTarget, sEventType, fnHandler) { if (oTarget.removeEventListener) { oTarget.removeEventListener(sEventType, fnHandler, false); } else if (oTarget.detachEvent) { oTarget.detachEvent("on" + sEventType, fnHandler); } else { oTarget["on" + sEventType] = null; }
通过上面的方法,在使用2级事件注册时,传入自己的参数。
addEventHandler(resize, "mousedown", BindAsEventListener(this, this.Start,fun ) );
然后自己小小的修改了下BindAsEventListener方法
var BindAsEventListener_my = function(object, fun) { var args = Array.prototype.slice.call(arguments).slice(2); return function() { return fun.apply(object, [arguments[0] || window.event].concat(args)); } }
这几个方都是兼容IE和FF的。
二,
防止冒泡
function(e) { //防止冒泡 e.stopPropagation ? e.stopPropagation() : (e.cancelBubble = true); }
清除选,在拖动时,可以防止ondrag
window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();
三,还有很多很多……