Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Изменение размера и перемещение элементов (https://javascript.ru/forum/dom-window/49422-izmenenie-razmera-i-peremeshhenie-ehlementov.html)

Nupster 12.08.2014 18:35

Изменение размера и перемещение элементов
 
Добрый день.
Суть проблемы заключается в том, что мне необходимо реализовать перемещение и изменение размеров объектов(блоков div).
<div id="header" class="b_res">
  <div class="top_g" id="headertop"></div>
   <div class="left_g" id="headerleft"></div>
   <div class="right_g" id="headerright"></div>
   <div style="clear: both;"></div>
   <div class="bottom_g" id="headerbottom"></div>
</div>

Это один блок, на странице их значительно больше. Соответственно на "header" накладываю события для перемещения, а для "headertop", "headerleft"... изменение размеров(это рамки, расположенные по краям родительского div`а "header". Возможно, отвратительное решение, но другого не нашёл). С перемещением разберусь сам, если поможете с изменением размеров.

document.getElementById('headertop').onmousedown = function(event) { saveCoord(this.parentNode,this); }
document.getElementById('headerleft').onmousedown = function(event) { saveCoord(this.parentNode,this); }
document.getElementById('headerright').onmousedown = function(event) { saveCoord(this.parentNode,this); }
document.getElementById('headerbottom').onmousedown = function(event) { saveCoord(this.parentNode,this); }


function getCoord(o_event) {
    if (o_event) {
      x = o_event.pageX;
      y = o_event.pageY;
    }
    else {
      x = window.event.clientX;
      y = window.event.clientY;
      if (ie) {
        y -= 2;
        x -= 2;
      }
    }
    return new Array(x, y);
  }



function saveCoord(pElem,elem){
var coord = getCoord(event);
w_block = block.clientWidth; 
h_block = block.clientHeight; 
d_w = w_block - coord[0]; 
d_h = h_block - coord[1];
//дальнейший код
}


Так вот в Firefox
var coord = getXY(event);
ничего не возвращает. alert(event) выводит undefined. В остальных браузерах всё отлично работает.
Пытался использовать http://javascript.ru/tutorial/events...entx-y-pagex-y также ничего не происходит.
Пытался выносить event в глобальную переменную и потом как-то с этим работать, но проблема либо остаётся, либо координаты считаются в разных браузерах по разному.

Aetae 12.08.2014 19:00

.onmousedown = function(event) { saveCoord(this.parentNode,this,*!*event*/!*); }

function saveCoord(pElem,elem,*!*event*/!*){
var coord = getCoord(event);
w_block = block.clientWidth;
h_block = block.clientHeight;
d_w = w_block - coord[0];
d_h = h_block - coord[1];
//дальнейший код
}
Или, что логичнее:
.onmousedown = *!*saveCoord*/!*;

function saveCoord(event){
*!*var pElem = this.parentNode, elem = this;*/!*
var coord = getCoord(event);
w_block = block.clientWidth;
h_block = block.clientHeight;
d_w = w_block - coord[0];
d_h = h_block - coord[1];
//дальнейший код
}

Nupster 12.08.2014 19:38

Спасибо за помощь. Заработало.


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