16.07.2012, 18:19
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Раед,
Пасиб большое! *Только в Ие 8 не работает... жаль нужна кроссбраузерность
|
|
16.07.2012, 18:35
|
|
''
|
|
Регистрация: 11.12.2011
Сообщений: 636
|
|
Сообщение от Раед
|
Только в Ие 8 не работает
|
Должно работать, если в код таблицы добавить tbody (ишак его сам не создаёт)
|
|
16.07.2012, 19:03
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Сообщение от Раед
|
Должно работать, если в код таблицы добавить tbody
|
Да -Сенкс, подставил <tbody> - все работает!
|
|
19.07.2012, 13:28
|
|
Профессор
|
|
Регистрация: 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>
|
|
19.07.2012, 13:30
|
|
Профессор
|
|
Регистрация: 21.04.2012
Сообщений: 951
|
|
bes,
я пробовал, но не ахти
|
|
19.07.2012, 14:07
|
|
Профессор
|
|
Регистрация: 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.
|
Вопрос тогда: в каких случаях использовать эту установку координат (мы и так уже всё рассчитали: и элемент получили и его координаты, если по ним элемент получали)?
|
|
19.07.2012, 18:59
|
|
Профессор
|
|
Регистрация: 21.04.2012
Сообщений: 951
|
|
bes,
фиг знает, по болшому счету она не нужна ибо не получается ее использовать
|
|
19.07.2012, 20:22
|
|
Профессор
|
|
Регистрация: 21.04.2012
Сообщений: 951
|
|
bes,
надеюсь что в будущем можно будет использовать эти координаты
|
|
19.07.2012, 21:03
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Сообщение от Dim@
|
bes,
надеюсь что в будущем можно будет использовать эти координаты
|
Да, или подключится тот, кто нам расскажет как их использовать
|
|
20.07.2012, 03:35
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,586
|
|
Они нужны для одной простой цели: быть переданными в объект 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.
|
|
|
|