Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.135.201.209] |
|
Сообщ.
#1
,
|
|
|
Добрый день. Подскажите плиз!!!
Вот два метода получения координат на JS <a href=script.cgi><img src=map.gif ismap></a> Запрос такой: script.cgi?18,33 где 18,33 - x,y <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 и только потом приклеить координаты. Что-то у меня не получается. Есть еще один метод: 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 или через форму. Спасибо. |
Сообщ.
#2
,
|
|
|
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'); } Еще один вопрос. Вот эти функции работает в эксплорере. Но стоит сдвинуть скроллинг и тогда координаты возвращаются неверно. Нельзя ли это както компенсировать. |
Сообщ.
#3
,
|
|
|
в IE есть 8 свойтсв объекта event - clientX,clientY,offsetX,offsetY,screenX,screenY,x,y - которые работают с координатами
в NN есть 6 свойств объекта event - layerX,layerY,pageX,pageY,screenX,screenY - которые тоже работают с координатами думаю, что если совместить эти свойства, то можно сделать скрипт, который тебе нужен не только для IE, но и для NN |
Сообщ.
#4
,
|
|
|
Большое спасибо. разобрался ...
|