Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 16.07.2012, 18:19
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Раед,
Пасиб большое! *Только в Ие 8 не работает... жаль нужна кроссбраузерность
Ответить с цитированием
  #12 (permalink)  
Старый 16.07.2012, 18:35
Аватар для Раед
''
Отправить личное сообщение для Раед Посмотреть профиль Найти все сообщения от Раед
 
Регистрация: 11.12.2011
Сообщений: 636

Сообщение от Раед
Только в Ие 8 не работает
Должно работать, если в код таблицы добавить tbody (ишак его сам не создаёт)
Ответить с цитированием
  #13 (permalink)  
Старый 16.07.2012, 19:03
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от Раед
Должно работать, если в код таблицы добавить tbody
Да -Сенкс, подставил <tbody> - все работает!
Ответить с цитированием
  #14 (permalink)  
Старый 19.07.2012, 13:28
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

При использовании document.elementFromPoint мы собственно опять получаем сам элемент (только по координатам), при этом координаты в initMouseEvent никак не влияют на получение результата.
Можно ли всё-таки получить результат именно по координатам в initMouseEvent?

Типа как-нибудь так

<body>
<input type="button" value="click" id="but">
<input type="file" id="inp">

<script>
window.onload = function () {
  var inp = document.getElementById('inp');
  var but = document.getElementById('but');

  but.onclick = function () {
    var coords = inp.getBoundingClientRect();
    var x = coords.left;
    var y = coords.top;
    var evt = document.createEvent("MouseEvent");
    evt.initMouseEvent("click", true, true, window, 0, 0, 0, x, y, false, false, false, false, 0, null);
    document.body.dispatchEvent(evt);
  }

}
</script>
Ответить с цитированием
  #15 (permalink)  
Старый 19.07.2012, 13:30
Аватар для Dim@
Профессор
Отправить личное сообщение для Dim@ Посмотреть профиль Найти все сообщения от Dim@
 
Регистрация: 21.04.2012
Сообщений: 951

bes,
я пробовал, но не ахти
Ответить с цитированием
  #16 (permalink)  
Старый 19.07.2012, 14:07
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от Dim@
bes,
я пробовал, но не ахти
https://developer.mozilla.org/en/DOM...initMouseEvent
Цитата:
event.initMouseEvent(type, canBubble, cancelable, view,
detail, screenX, screenY, clientX, clientY,
ctrlKey, altKey, shiftKey, metaKey,
button, relatedTarget);

clientX
the Event's client x coordinate. Sets the value of event.clientX.
clientY
the Event's client y coordinate. Sets the value of event.clientY.
Вопрос тогда: в каких случаях использовать эту установку координат (мы и так уже всё рассчитали: и элемент получили и его координаты, если по ним элемент получали)?
Ответить с цитированием
  #17 (permalink)  
Старый 19.07.2012, 18:59
Аватар для Dim@
Профессор
Отправить личное сообщение для Dim@ Посмотреть профиль Найти все сообщения от Dim@
 
Регистрация: 21.04.2012
Сообщений: 951

bes,
фиг знает, по болшому счету она не нужна ибо не получается ее использовать
Ответить с цитированием
  #18 (permalink)  
Старый 19.07.2012, 20:22
Аватар для Dim@
Профессор
Отправить личное сообщение для Dim@ Посмотреть профиль Найти все сообщения от Dim@
 
Регистрация: 21.04.2012
Сообщений: 951

bes,
надеюсь что в будущем можно будет использовать эти координаты
Ответить с цитированием
  #19 (permalink)  
Старый 19.07.2012, 21:03
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от Dim@
bes,
надеюсь что в будущем можно будет использовать эти координаты
Да, или подключится тот, кто нам расскажет как их использовать
Ответить с цитированием
  #20 (permalink)  
Старый 20.07.2012, 03:35
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,587

Они нужны для одной простой цели: быть переданными в объект event.
Если внезапно такое событие вызовет навешенный когда-то обработчик, который работает с координатами клика, то c правильными координатами всё ок, а с нулевми могут вылезти баги.
Простой пример:
<!DOCTYPE HTML>
<html lang="ru-RU">
<head>
	<meta charset="UTF-8">
	<style type="text/css">
	body{padding:30px 0}
	.tooltiped {border-bottom: 1px dotted #f00;cursor:pointer;margin:40px;}
	.tooltiped .tooltip {display:block;position:absolute;top:-9999px;left:-9999px;border: 1px solid #f00;background:#fdd}
	
	.red {border-color: #f00;}
	.red .tooltip {border-color: #f00;background: #fdd}	
	.green {border-color: #0f0;}
	.green .tooltip {border-color: #0f0;background: #dfd}	
	.blue {border-color: #00f;}
	.blue .tooltip {border-color: #00f;background: #ddf}	

	</style>
	<title></title>
</head>
<body>


<div class="tooltiped red">Просто пример. Наведите мышь.
  <span class="tooltip">Пояснение посясняющее самую суть пояснениея пояснений</span>
</div>

<div class="tooltiped green">Сюда мы скастовали нулевой initMouseEvent.
  <span class="tooltip">initMouseEvent("mousemove", true, true, d[1], 0, 0, 0, 0, 0, false, false, false, false, 0, null);</span>
</div>

<div class="tooltiped blue">А сюда c правильно заданными координатами.
  <span class="tooltip">initMouseEvent("mousemove", true, true, d[2], 0, 0, 0, 130, 211, false, false, false, false, 0, null);</span>
</div>

<script type="text/javascript">
(function(){
	var d=document.getElementsByClassName('tooltiped'),  i=d.length,
	mousemove = function(e){
		var tt = this.children[0].style;
		tt.top = e.clientY + 10 + 'px';
		tt.left = e.clientX + 10 + 'px';
	},
	mouseout = function(e){
		this.children[0].style.cssText="";
	};
	while(i--) {
		d[i].onmousemove = mousemove;
		d[i].onmouseout = mouseout;
	}
	
	
	var e1 = document.createEvent('MouseEvent'), e2 = document.createEvent('MouseEvent');
	e1.initMouseEvent("mousemove", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
	e2.initMouseEvent("mousemove", true, true, window, 0, 0, 0, 130, 211, false, false, false, false, 0, null);
	d[1].dispatchEvent(e1);
	d[2].dispatchEvent(e2);
}())
</script>

</body>
</html>
__________________
29375, 35

Последний раз редактировалось Aetae, 20.07.2012 в 03:50.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дебаг js, или как найти обработчик события для тега jimm88 Events/DOM/Window 1 18.04.2012 15:11
Dreamweaver CS5.5 и ООП. Не выводит подсказки методов. Как можно исправить? jsuse Общие вопросы Javascript 3 23.03.2012 19:57
Как можно отловить id который добавил с помощью append() ? saturn Элементы интерфейса 4 17.01.2012 01:35
Как использовать 2 локальные переменные? 9xakep Общие вопросы Javascript 2 26.07.2011 17:53
Как можно в DIV_е с включенным contentEditable запретить использовать <SCRIPT> и <A>? Маэстро Events/DOM/Window 11 02.07.2011 20:00