На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: ElcnU, ANDLL, fatalist
  
> Координаты клика на картинке
    Добрый день. Подскажите плиз!!!
    Вот два метода получения координат на JS
    ExpandedWrap disabled
       
      <a href=script.cgi><img src=map.gif ismap></a>

    Запрос такой: script.cgi?18,33 где 18,33 - x,y

    ExpandedWrap disabled
       
      <FORM METHOD=get ACTION="script.cgi">
      <INPUT TYPE=image SRC=map.gif name=map>
      <!--Submit НЕ нужен фома отправиться после клика по картинке -->
      </FORM>

    Запрос будет таким: script.cgi?map.x=18&map.y=33

    А если мне надо еще какие нить параметры передать, например script.cgi?sess=kjfnvkj$Size=6746
    и только потом приклеить координаты. Что-то у меня не получается.

    Есть еще один метод:
    ExpandedWrap disabled
       
      function getRelLeft(which) {
          if (nn4) {
              return document.layers[which].pageX;
          } else {
              var elem = (dom)? document.getElementById(which) : document.all[which];
              var pos = elem.offsetLeft;
              while (elem.offsetParent != null) {
                  elem = elem.offsetParent;
                  pos += elem.offsetLeft;
                  if (elem.tagName == 'BODY') break;
              } return pos;
          }
      }
       
      function getRelTop(which) {
          if (nn4) {
              return document.layers[which].pageY;
          } else {
              var elem = (dom)? document.getElementById(which) : document.all[which];
              var pos = elem.offsetTop;
              while (elem.offsetParent != null) {
                  elem = elem.offsetParent;
                  pos += elem.offsetTop;
                  if (elem.tagName == 'BODY') break;
              } return pos;
          }
      }
       
      function ReLocate(){
        M = Math.round(SIZE.value/200)+100; //200 - половина ширины картинки!
        A = X.value - (-2) * Math.round((event.x - getRelLeft("map") - Math.round(map.width / 2))*SIZE.value/map.width);
        B = Y.value - (-2) * Math.round((event.y - getRelTop("map") - Math.round(map.height / 2))*SIZE.value/map.width);
      //  window.alert(A + ', ' + B);
        wopen("/cgi-bin/infoDB.exe?SID="+SESS.value+"&x="+A+"&y="+B+"&size="+M+"&R="+Math.random(),'Info',340,280,'yes','yes');
      }

    только он в интернет эксплорере только пашет.
    Может кто нить подскажет универсальный метод получения координат и чтоб еще дополнительные параметры можно было сунуть. Можно на JS или через форму.

    Спасибо.
      ExpandedWrap disabled
         
        function getRelLeft(which) {
        if (nn4) {
        return document.layers[which].pageX;
        } else {
        var elem = (dom)? document.getElementById(which) : document.all[which];
        var pos = elem.offsetLeft;
        while (elem.offsetParent != null) {
        elem = elem.offsetParent;
        pos += elem.offsetLeft;
        if (elem.tagName == 'BODY') break;
        } return pos;
        }
        }
         
        function getRelTop(which) {
        if (nn4) {
        return document.layers[which].pageY;
        } else {
        var elem = (dom)? document.getElementById(which) : document.all[which];
        var pos = elem.offsetTop;
        while (elem.offsetParent != null) {
        elem = elem.offsetParent;
        pos += elem.offsetTop;
        if (elem.tagName == 'BODY') break;
        } return pos;
        }
        }
         
        function ReLocate(){
        M = Math.round(SIZE.value/200)+100; //200 - половина ширины картинки!
        A = X.value - (-2) * Math.round((event.x - getRelLeft("map") - Math.round(map.width / 2))*SIZE.value/map.width);
        B = Y.value - (-2) * Math.round((event.y - getRelTop("map") - Math.round(map.height / 2))*SIZE.value/map.width);
        // window.alert(A + ', ' + ;
        wopen("/cgi-bin/infoDB.exe?SID="+SESS.value+"&x="+A+"&y="+B+"&size="+M+"&R="+Math.random(),'Info',340,280,'yes','yes');
        }


      Еще один вопрос. Вот эти функции работает в эксплорере. Но стоит сдвинуть скроллинг и тогда координаты возвращаются неверно. Нельзя ли это както компенсировать.
        в IE есть 8 свойтсв объекта event - clientX,clientY,offsetX,offsetY,screenX,screenY,x,y - которые работают с координатами
        в NN есть 6 свойств объекта event - layerX,layerY,pageX,pageY,screenX,screenY - которые тоже работают с координатами
        думаю, что если совместить эти свойства, то можно сделать скрипт, который тебе нужен не только для IE, но и для NN
          Большое спасибо. разобрался ...
          1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0184 ]   [ 14 queries used ]   [ Generated: 17.05.24, 07:30 GMT ]