Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   И снова про координаты мыши (https://javascript.ru/forum/jquery/15908-i-snova-pro-koordinaty-myshi.html)

Jeer 18.03.2011 19:30

И снова про координаты мыши
 
Здравствуйте, люди добрые, уже всё облазил, подскажите, плиз почему не могу найти координаты мыши:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Jeer.aspx.cs" Inherits="Jeer" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.5.js">
</script>
</head>
<body>
<form id="form1" runat="server">

<div id="granica"
style="position:absolute; width:99%; height:99%; cursor: pointer;">
</div>

<script type="text/javascript">
$("#granica").mousemove(function (e) {
var pCoords = "( "+e.pageX+", "+e.pageY+" )";
var cCoords = "( "+e.clientX+", "+e.clientY+" )";
};
</script>

</form>
</body>
</html>

--------------------
e.pageX, e.clientX говорит что не существует

kostr 19.03.2011 00:05

Вот такая есть функция для позиции мыши:

function posMouse(e){
 var mouX = 0, mouY = 0;
 if (!e) e = window.event;
 if (e.pageX || e.pageY) {
  mouX = e.pageX;
  mouY = e.pageY;
 } else if (e.clientX || e.clientY) {
  mouX = e.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) - document.documentElement.clientLeft;
  mouY = e.clientY + (document.documentElement.scrollTop || document.body.scrollTop) - document.documentElement.clientTop;
 }
 return {"x":mouX, "y":mouY}
}


Возвращает объект со свойствами x и y - координаты мыши.

Jeer 19.03.2011 13:23

Цитата:

Сообщение от kostr (Сообщение 97143)
...
if (!e) e = window.event;
...

у window нету свойства event, вопрос в этом как раз, может мне что-то где-то нужно подключить или прописать? ясно же что мелочи какой-то не хватает, но чего, не могу найти, люди добрые поможиииите :)

Matre 19.03.2011 13:28

Цитата:

у window нету свойства event
Есть, он используется для IE.
Код рабочий.

Jeer 19.03.2011 13:48

Цитата:

Сообщение от Matre (Сообщение 97183)
Есть, он используется для IE.
Код рабочий.

эм.. у меня же суперсреда разработки =) жмешь window, ставишь . (точку), и высвечивается полный список что можно жать, а что нельзя :) event нельзя жать, не знает вижуал студия такой бадьи. Я понимаю, что это прискорррбно...

Matre 19.03.2011 14:09

Для не-IE эта строка ничем не навредит, window.event берётся только при условии, что event-объект не передаётся в обработчике.

Jeer 19.03.2011 14:22

да при чем тут браузер? =) вижуал студия не видит window.event

Matre 19.03.2011 15:47

И event-объект тоже не видит?

Jeer 19.03.2011 17:11

не видит!

Kolyaj 19.03.2011 17:13

Цитата:

Сообщение от Jeer
вижуал студия не видит window.event

И что теперь? Руками 5 букв не написать?

Jeer 19.03.2011 17:18

Цитата:

Сообщение от Kolyaj (Сообщение 97218)
И что теперь? Руками 5 букв не написать?

Так я и спрашиваю какие?? что написать-то?

Jeer 19.03.2011 17:22

а, то есть Вы хотите сказать, что этот код работает, хоть и не распознаётся, так? Если вижуал студия не видит, я так понимал, что она пропускает этот кусок на мимо. И работает только в ИЕ, как писалось раньше, все ясно теперь. А что тогда с другими браузерами? Как-то это неправильно, что в ИЕ можно узнать координаты, а в опере или ФФ нельзя.

Kolyaj 19.03.2011 17:31

Вам kostr дал кроссбраузерное решение.

Jeer 19.03.2011 17:47

Цитата:

Сообщение от Kolyaj (Сообщение 97224)
Вам kostr дал кроссбраузерное решение.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Jeer.aspx.cs" Inherits="Jeer" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.5.js">
</script>
</head>
<body>
<form id="form1" runat="server">
<div id="granica"
style="position:absolute; width:99%; height:99%; cursor: pointer;">
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</div>

<script type="text/javascript">
$("#granica").mousedown(function () {
var mouX = 0, mouY = 0;
if (!e) e = window.event;
if (e.pageX || e.pageY) {
mouX = e.pageX;
mouY = e.pageY;
} else if (e.clientX || e.clientY) {
mouX = e.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) - document.documentElement.clientLeft;
mouY = e.clientY + (document.documentElement.scrollTop || document.body.scrollTop) - document.documentElement.clientTop;
}
$("#Label1").text("mouX-" + mouX + "mouY-" + mouY);
});
</script>
</form>
</body>
</html>
-----------------------------
У меня есть div (id="granica") который занимает всю страницу. В него добавлен Label (ID="Label1"). При нажатии в любом месте экрана должны в Лэйбл вывестись координаты нажатой кнопки, НО! этого не происходит, в браузере пишет в низу желтый треугольник с черным восклицательным знаком и сообщением "Ошибка на странице". Это происходит из-за того, что
if (!e) e = window.event;
не определено.

Kolyaj 19.03.2011 20:02

Это происходит из-за того, что вы приведённый пример не полностью скопировали.

Jeer 21.03.2011 10:28

Цитата:

Сообщение от Kolyaj (Сообщение 97241)
Это происходит из-за того, что вы приведённый пример не полностью скопировали.

$("#granica").mousedown(function (e) {

крутяк, ребят, просто надо было поспать пару дней, действительно работает, а я уже впал в уныние =) спасибо большое!


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