Показать сообщение отдельно
  #9 (permalink)  
Старый 29.01.2014, 04:29
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Внерамочная, автозагружаемая, автономная функция таскания чего угодно куда хочешь. (с) я

function DragElems(elemtype) {

	var x	=0; 
	var y	=0; 
	var oX	=0; 
	var oY	=0; 
	var pX	=0; 
	var pY	=0; 
	var obj	=0; 
	var z	=0; 
	var mouse=0;
	
	var refresh = function(e) {

		e = e || window.event;
		
		if (e.type == 'mousedown') {
			set(e);
			oX = x;
			oY = y;
			obj.style.curor = 'move';
			obj.style.zIndex = z++;
			pos();
		}
		
		if (e.type == 'mouseup') {
			obj.style.cursor = 'auto';	
			obj.style.border = "0";
		}
		
		if (e.type == 'mousemove') {
			set(e);
			obj.style.curor = "move";
			obj.style.left = (x-oX+pX)+"px";
			obj.style.top = (y-oY+pY)+"px";
		}
	};
	
	var pos = function() {
		pX = pY = 0;
		var o = obj;
		if(o.offsetParent) {
			do {
				pX += o.offsetLeft;
				pY += o.offsetTop;
			} while((o = o.offsetParent));
		}
	};
		
	var set = function(e) {
		if(e.pageX || e.pageY) {
			x = e.pageX;
			y = e.pageY;
		}
		else if(e.clientX || e.clientY)	{
			x = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
			y = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
		}
	}; 
	
	var show = function() {
		obj.style.border = "1px solid grey";
		mouse = 1; 
	};
	
	// автолодер
	(function() {

		var elems = document.getElementsByTagName(elemtype);

		for(var i = 0; i < elems.length; i++) {
		
			addEvent(elems[i], "mousedown",
				function(e) {
					obj = e.srcElement || e.target;
					refresh(e);
					z = 1;
					mouse = window.setTimeout(show, 2000);
				}
			);
			
			addEvent(elems[i], "mouseup", 
				function(e){ 
					window.clearTimeout(mouse); 
					refresh(e);
					mouse = 0;
				} 
			);
				
			addEvent(elems[i], "mousemove",	function(e) { 
				if(mouse == 1)
					refresh(e);
				}
			);
			
		}

	})(elemtype);

};
Ответить с цитированием