`

js的缩放和拖动

阅读更多

学习了 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();

 

三,还有很多很多……

 

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics