Javascript-форум (https://javascript.ru/forum/)
-   Internet Explorer (https://javascript.ru/forum/css-html-internet-explorer/)
-   -   setAttribute для IE (https://javascript.ru/forum/css-html-internet-explorer/18190-setattribute-dlya-ie.html)

anlov 21.06.2011 12:29

setAttribute для IE
 
привет.
код
newOption.setAttribute('ondragstart', 'delElem(this, event)')

в IE не работает.
подскажите, как надо написать, чтобы IE нормально это обрабатывал.

Kolyaj 21.06.2011 12:31

http://javascript.ru/tutorial/events/comparison

anlov 21.06.2011 12:56

сорри, не понял.
так
newOption.attachEvent("ondragstart", function() { delElem(this, event) })
тоже не работает. тут все дело в синтаксисе, а без примера сам будешь вечность пробовать...

для более ясного понимания:
при перетаскивании линка из одного пункта меню (обычный <ul>) в другой (пользовательский <select>) при отпускании кнопки мыши (ondrop) этот пункт меню должен добавиться в <select> со своими аргументами. в числе которых кроме прочих и ondragstart для удаления потом этого пункта из пользовательского меню.
Сейчас в ФФ работает, а вот в ИЕ:

Цитата:

Ошибка на странице

неправильный аргумент
строка: 56
символ: 4
код: 0
URI: http://localhost:8505/index.php?id=22

trikadin 21.06.2011 14:28

В ie обработчики, добавленные через setAttribute, не работают. Да и, собственно, ни в одном браузере не обязаны. Вам скинули статью, почитайте. Для примера:

<div id="1">1</div>
<div id="2">2</div>

<script>
div1= document.getElementById("1");
div2= document.getElementById("2");

div1.setAttribute("onclick", "alert('hi')"); // работает в ff (и ещё где-нибудь, наверное), но не в ie
div2.onclick= function(){alert('hi')}; // работает везде
</script>

anlov 21.06.2011 15:08

статью прочитал. еще до. понял, что такое ИЕ не обрабатывает, хотя ясно указано, что вторым аргументом в setAttribute идет строка. через свойство тоже пробовал:
newOption.ondragstart=function(){delElem(this, event)};
в ФФ работает, в ИЕ - нет.

Nekromancer 21.06.2011 15:10

До 8го ИЕ, на сколько я помню, не знает событие ondragstart.

anlov 21.06.2011 15:31

проверяю на 8-ке - ничего...

Nekromancer 21.06.2011 15:41

<!DOCTYPE html>
<html>
<head>
<script>
window.onload = function(){
	document.getElementById('drag').ondragstart = function(){
		console.log('start')
	}
}
</script>
</head>
<body>
<div style="position: absolute; background: black; top: 50px; left: 50px; width: 100px; height: 100px; border: 1px solid black;" id="drag"> reteas </div>
</body>
</html>

Вроде как работает, вообще я соврал :) Даже в старых ИЕ работает, по крайней мере так показывает Platform Preview для 7ки.

anlov 21.06.2011 15:53

да я на dragstart и не жаловался. мне по drop'у надо создавать в выпадающем списке новый <option> с
ondragstart="dragElem(this, event)"

и, судя по всему, именно здесь ИЕ жалуется на неправильный аргумент

Nekromancer 21.06.2011 16:55

Цитата:

Сообщение от anlov (Сообщение 109763)
да я на dragstart и не жаловался. мне по drop'у надо создавать в выпадающем списке новый <option> с
ondragstart="dragElem(this, event)"

и, судя по всему, именно здесь ИЕ жалуется на неправильный аргумент

<!DOCTYPE html>
<html>
<head>
<script>
window.onload = function(){
	var drag = document.getElementById('drag'), drop = document.getElementById('drop');
	drag.ondragstart = function(){
		console.log('start')
	}
	drop.ondrop = function(){
		console.log('drop')
		window.event.returnValue = false;
		return false
	}
	drop.ondragover = function(){
		console.log('over')
		window.event.returnValue = false;
		return false
	}
}
</script>
</head>
<body>
<img style="position: absolute; top: 50px; left: 50px; width: 100px; height: 100px;" id="drag" src="img.jpg">
<div style="position: absolute;  top: 150px; left: 50px; width: 150px; height: 150px; border: 1px solid black;" id="drop"> </div>
</body>
</html>

Событие drop, не работает без события dragover, так как браузер определяет можно ли в этот элемент что то сбросить, когда по нему ползёт мышь.


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