Показать сообщение отдельно
  #6 (permalink)  
Старый 21.04.2011, 17:08
Аватар для Magneto
Люмус, Емаксос Developer!
Отправить личное сообщение для Magneto Посмотреть профиль Найти все сообщения от Magneto
 
Регистрация: 06.05.2010
Сообщений: 677

После нескольких опытов вот к чему я пришел:

<html><head>
<style type="text/css">
#el{
  width:200px;
  height:70px;
  position:relative;
  top:20px;
  left:50px;
  background:#555}
</style>
</head><body>
  <div id="el"></div>
<script type="text/javascript">
var el = document.getElementById('el');
    el.addEventListener('click', getClickXY, false);
function getClickXY(event)
  {
    var clickX = (event.layerX == undefined ? event.offsetX : event.layerX) + 1;
    var clickY = (event.layerY == undefined ? event.offsetY : event.layerY) + 1;
    alert('Координаты клика: '+ clickX +' x '+ clickY);
  }
</script>
</body></html>


Элемент страницы по которому кликает пользователь и относительно которого нужно узнать координаты клика, должен иметь css-свойство z-index отличное от 0 (нуля). Это связано с тем что javascript-свойство layerX(Y) вычисляется для активного слоя. В Opera это свойство не работает, поэтому для нее берется свойство offsetX(Y). +1 добавляется к каждому свойству потому что отсчет координат начинается с 0, то есть самая первая точка имеет координаты 0х0.
В css свойство z-index больше 0 имеют все элементы для которых position указано как relative | absolute | fixed.

Последний раз редактировалось Magneto, 21.04.2011 в 18:04.
Ответить с цитированием