Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Какому area принадлежит позиция точки ? (https://javascript.ru/forum/misc/35423-kakomu-area-prinadlezhit-poziciya-tochki.html)

Deff 10.02.2013 21:16

Какому area принадлежит позиция точки ?
 
Нужно определить по введенным координатам (от перемещаемого над Мап-картой dragable blocka) к какому area принадлежит данная точка,
Пробовал через $(document.elementFromPoint(X,Y) - кажет всегда только единственный елемент, Мап-карту, (Пробовал поднимать z-index(om)
area или обертку area - пофег... (кроме гугол хрома, у него area изначально выше всех)

Как отследить какому area принадлежит позиция (исключая пересчет координат area) ?

Deff 10.02.2013 21:35

<!DOCTYPE HTML>
<html>
  <head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
  </head>
  <body>




<script type="text/javascript">
var onlineUserList=[]; // Cписок Юзеров и их локаций
//$(document).ready(function(){ });
function Funk (){ //Функция, исполняемая по загрузке карты

var Areas=[], ArrSpan=[]
 $("#karta-00 area").each(function(i){
          $(this).wrap('<span id="Span'+i+'" style="display:inline:block;bopder:red solid 1px;z-index:100;display:inline-block;position:relative" onclick="alert('+i+'Span)"></span>');
          $(this).get(0).setAttribute('onclick','alert(\''+i+'X\')');
          var a=$(this).parent();//
          var a=$(this).parents('#karta-00')
          alert('top area:'+a.position().top+'  Left area:'+a.position().left);

 });
          alert($('#div').height());
$(document.elementFromPoint(500,300)).click()//alert(alert(click();
$( '#div' ).on( 'click', 'Span', function( e ) {

    alert( e.target.href );

});

}
</script>
<div  id="div" style="z-index:99;position:absolute width:100%;height:100%;bopder:red solid 1px;" onclick="alert('A')">
<map style="z-index:100;position:relative"  id="karta-00" name="karta" style="z-index:100;position:relative" >
<area href="/" shape="rect" coords="0,0,250,150" title="В оглавлении форума">
<area href="/f1-forum" shape="rect" coords="250,0,500,150" title="Ваш первый форум">
<area href="/viewonline" shape="rect" coords="0,150,500,300" title="Просматривает «Кто сейчас на форуме»">
</map>
<img src="http://s017.radikal.ru/i416/1302/69/20132fd94fd6.jpg" style="z-index:0;position:relative" usemap="#karta" border="0" onload="Funk()" onclick="alert('Увидел, что был Клик по карте')/**/">
</div>

  </body>
</html>

nerv_ 10.02.2013 23:21

Цитата:

Сообщение от Deff
перемещаемого над Мап-картой dragable blocka

ловить события мыши через делегирование над areas?

Deff 10.02.2013 23:28

nerv_], Cпс,

Цитата:

Сообщение от nerv_
ловить события мыши через делегирование над areas?

:-? Можно пример ?
В принципе события не всегда есть от юзера - драгабле пустили - он плывет сам по себе, area в момент запуска - вроде итак известен(а далее он должен удариться об край некого ареа (вот тут и нужна фиксация), для прямоугольников конечно можно просчитать все регионы и дать массив границ, а для сложно карты... (Думал генерить событие с hover c текущей координатой, дык - карта их перехватывает(если программное событие, кроме Хрома)

nerv_ 10.02.2013 23:43

я про
$( 'map' ).on( 'mousemove', 'area', function( e ) {

    console.log( e.target.href );

});

Deff 10.02.2013 23:50

Попробую, ...

Deff 10.02.2013 23:59

Чот не получается программно точку наведения перемещать
document.elementFromPoint(X,Y) получает всегда мап карту(<img usemap="ZZ"> ,если X,Y в её пределах)... а не area
mousemove не передается
Наверно нужен иной способ перемещения координаты псевдонаведения над картой

Кажется Появилясь идея Как делегировать вначале на Map, а не на IMG


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