Javascript-форум (https://javascript.ru/forum/)
-   Firefox/Mozilla (https://javascript.ru/forum/css-html-firefox-mizilla/)
-   -   Событие event в FireFox (https://javascript.ru/forum/css-html-firefox-mizilla/35491-sobytie-event-v-firefox.html)

yambbkru 12.02.2013 15:58

Событие event в FireFox
 
Перечитала уже много об этом, в том числе и на этом сайте, но не могу понять одну вещь на счет события event.
Я нашла код на одном из форумов, который позволяет двигать объекты мышью.

<html>
<head>
</head>
<body>
	<script type="text/javascript" charset="utf-8">
		var DragObject;
		var OffsetX, OffsetY;
		var isDragging = false;

		window.onload = function() {
			var o = document.getElementById("obj01");
			o.style.position = "relative";
			o.style.left = "0px";
			o.style.top = "0px";
		}
		
		function mouseDown(o, e) {
			DragObject = o;
			DragObject.ondrag = function() {return false;}
			DragObject.onselectstart = function() {return false;}
			if (window.event) {e = window.event;}
			var oX = parseInt(DragObject.style.left);
			var oY = parseInt(DragObject.style.top);
			var mouseX = e.clientX;
			var mouseY = e.clientY;
			OffsetX = mouseX - oX;
			OffsetY = mouseY - oY;
			isDragging = true;
			return false;
		}

		document.onmousemove = function (e) {
			if (!isDragging) {return;}
			if (window.event) {e = window.event;}
			var mouseX = e.clientX;
			var mouseY = e.clientY;
			var newX = mouseX - OffsetX;
			var newY = mouseY - OffsetY;
			DragObject.style.left = newX + "px";
			DragObject.style.top = newY + "px";
			return false;
		}

		document.onmouseup = function() {
			if (!isDragging) {return;}
			isDragging = false;
			return false;
		}

	</script>
<input type="button" id="obj01" onmousedown="javascript:mouseDown(this, event)">
</body>
</html>


Если вызвать событие onmousedown с javascript, например так:

o.onmousedown = mouseDown(o, event);


то работает во всех браузерах, кроме FireFox!!! Я так понимаю, что не появляется событие event или не так как надо...
Что не правильно? Подскажите, пожалуйста.

рони 12.02.2013 16:28

yambbkru,
Вариант...
<html>
<head>
</head>
<body>
	<script type="text/javascript" charset="utf-8">
		var DragObject;
		var OffsetX, OffsetY;
		var isDragging = false;

		window.onload = function(e) {
			var o = document.getElementById("obj01");
            o.onmousedown = function (event)
{
        mouseDown(o, event);
}
			o.style.position = "relative";
			o.style.left = "0px";
			o.style.top = "0px";
		}

		function mouseDown(o, e) {
			DragObject = o;
			DragObject.ondrag = function() {return false;}
			DragObject.onselectstart = function() {return false;}
		   	if (window.event) {e = window.event;}
			var oX = parseInt(DragObject.style.left);
			var oY = parseInt(DragObject.style.top);
			var mouseX = e.clientX;
			var mouseY = e.clientY;
			OffsetX = mouseX - oX;
			OffsetY = mouseY - oY;
			isDragging = true;
			return false;
		}

		document.onmousemove = function (e) {
			if (!isDragging) {return;}
			if (window.event) {e = window.event;}
			var mouseX = e.clientX;
			var mouseY = e.clientY;
			var newX = mouseX - OffsetX;
			var newY = mouseY - OffsetY;
			DragObject.style.left = newX + "px";
			DragObject.style.top = newY + "px";
			return false;
		}

		document.onmouseup = function() {
			if (!isDragging) {return;}
			isDragging = false;
			return false;
		}

	</script>
<input type="button" id="obj01" >
</body>
</html>

yambbkru 12.02.2013 18:19

Спасибо, огромное!


Часовой пояс GMT +3, время: 12:19.