Javascript-форум (https://javascript.ru/forum/)
-   Internet Explorer (https://javascript.ru/forum/css-html-internet-explorer/)
-   -   Косяк JS в IE (https://javascript.ru/forum/css-html-internet-explorer/9001-kosyak-js-v-ie.html)

hated8 24.04.2010 10:07

Косяк JS в IE
 
Здравствуйте!
Помогите пожалуйста, не могу разобраться, почему вот такой скриптик прикрасно работает во всех браузерах кроме IE....

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />

<style>
.sticker{
		
		background-color:Red;
		width:145px;
		height:150px;
		position:absolute;
		z-index:15;
		Top:1px;
		
}
.stitl{
		
		width:100%;
		height:30px;
		position:absolute; 
		cursor:move; -width:100%;
		background-color:Green;
}
.txta{
	  margin-left:5px;
	  margin-Top:30px;
	  background: none;
	  border: none;
	  font-family:Times;
	  color:#916d00;
}
</style>

<script type="text/javascript">
	function drag_object( evt, obj )
	{
		evt = evt || window.event;
		obj.clicked = true;
		obj.mousePosX = evt.clientX;
		obj.mousePosY = evt.clientY;
		if( evt.preventDefault ) evt.preventDefault(); 
		else evt.returnValue = false;
		document.onmouseup = function(){ obj.clicked = false }
		document.onmousemove = function( evt )
		{
			evt = evt || window.event;
			if( obj.clicked )
			{
				posLeft = !obj.style.left ? obj.offsetLeft : parseInt( obj.style.left );
				posTop = !obj.style.top ? obj.offsetTop : parseInt( obj.style.top );
				mousePosX = evt.clientX;
				mousePosY = evt.clientY;
				obj.style.left = posLeft + mousePosX - obj.mousePosX + 'px';
				obj.style.top = posTop + mousePosY - obj.mousePosY + 'px';
				obj.mousePosX = mousePosX;
				obj.mousePosY = mousePosY;
			}
		}
	}
	function setcookie( name, value, timeout )
	{
	    timeout = timeout || 1000*60*60*24;
	    expires = (new Date((new Date).getTime() + timeout)).toUTCString();
	    document.cookie = name + '=' + value + ';expires=' + expires;
	}
	function createSticker()
	{
	 	var elDiv = document.createElement('div');
	 	elDiv.id = 'sticker';
		elDiv.className = 'sticker';
		document.body.appendChild(elDiv); 
		
		elSpn = document.createElement('span');
		elDiv.appendChild(elSpn); 
		elSpn.id = 'stitl';
		elSpn.className = 'stitl';
		elSpn.onmousedown=function(){drag_object(true, this.parentNode);};
	}
</script>


</head>
<body>
<div class=sticker><span class=stitl onmousedown="drag_object(event, this.parentNode)"></span></div>

<a href="#" onclick="createSticker()" >createSticker</a>
</body>
</html>


Заранее благодарю...

Octane 24.04.2010 10:11

Что не работает? Ошибки какие-то или что не так?

hated8 24.04.2010 10:24

Суть скрипта в том что по нажатию на ссылку создаётся динамический div, в нём, ещё один, для указания области захвата для перетаскивания обоих!

Т.Е. как окно и шапка окна(принцип тот же)...

Во всех браузерах норм работает, а в IE создаёт эти элементы, но перетакивание не работает!

Хотя и запускает drag_object() и передаёт в неё необходимые переменные...

Вся соль в том, что в том же IE Если не создавать обьект динамически, а просто прописать его в теле, то тоже все работает!!!:blink:

Octane 24.04.2010 10:52

elSpn.onmousedown=function(event){drag_object(event || window.event, this.parentNode);};

hated8 24.04.2010 10:57

нда, а ларчик просто открывался.... )

VERY :thanks: !!!


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