Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скрипт не работает в FireFox(Определение координат 
V
    Опции темы
lollollollol
Дата 3.10.2013, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 287
Регистрация: 12.3.2013

Репутация: нет
Всего: нет



Здравствуйте. есть скрипт, который определяет координаты клика на изображении.

Прекрасно работает в Опере, но не работает в FireFox, подскажите пожалуйста в чём проблема

Код

 <script language="javascript">

function mousePageXY(elem)
{
  var x = 0, y = 0;

  y_offset = elem.offsetTop;
  x_offset = elem.offsetLeft;

  if (window.event.pageX || window.event.pageY)
  {
    x = window.event.pageX;
    y = window.event.pageY;
  }
  else if (window.event.clientX || window.event.clientY)
  {
    x = window.event.clientX + 
      (document.documentElement.scrollLeft || document.body.scrollLeft) - 
      document.documentElement.clientLeft;
    y = window.event.clientY + 
      (document.documentElement.scrollTop || document.body.scrollTop) - 
      document.documentElement.clientTop;
  }

 var clickS = "x=" + (x - x_offset) + '&y=' + (y - y_offset); 
return clickS;
}

</script> 


Вызывается так: onClick="alert(mousePageXY(this))"


В чём проблема, почему в лисе не хочет работать?

Это сообщение отредактировал(а) lollollollol - 3.10.2013, 23:14
PM MAIL   Вверх
lollollollol
Дата 3.10.2013, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 287
Регистрация: 12.3.2013

Репутация: нет
Всего: нет



TypeError: window.event is undefined

Вот такая ошибка видна когда нажимаю Исследовать элемент
PM MAIL   Вверх
kin
Дата 4.10.2013, 08:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 204
Регистрация: 9.5.2008

Репутация: 2
Всего: 6



Цитата(lollollollol @  3.10.2013,  23:13 Найти цитируемый пост)
В чём проблема, почему в лисе не хочет работать?
 Привет! Ну наверное в том, что в FireFox  window.event is undefined

PM MAIL   Вверх
lollollollol
Дата 4.10.2013, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 287
Регистрация: 12.3.2013

Репутация: нет
Всего: нет



Это я уже понял, я 2 часа ползал по гуглу, так и не смог побороть проблему.



Скрипт писал не сам, взял с инета.
Есть готовый проект,  осталось побороть этот скрипт. с JS раньше не работал, да и в будущем нет нужды.
Подскажите плз как исправить проблему?

Это сообщение отредактировал(а) lollollollol - 4.10.2013, 09:23
PM MAIL   Вверх
lollollollol
Дата 4.10.2013, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 287
Регистрация: 12.3.2013

Репутация: нет
Всего: нет



Ап, как сделать чтобы в лисе заработало?
PM MAIL   Вверх
kin
Дата 4.10.2013, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 204
Регистрация: 9.5.2008

Репутация: 2
Всего: 6



Цитата(lollollollol @  4.10.2013,  09:22 Найти цитируемый пост)
Подскажите плз как исправить проблему?

Цитата(lollollollol @  4.10.2013,  09:22 Найти цитируемый пост)
Вызывается так: onClick="alert(mousePageXY(this))"

Код onClick="alert(mousePageXY(this))" замени на onClick="alert(mousePageXY(e,this))" где е есть объект-событие, соответственно в обработчике нужен еще один параметер...
Подробности посмотри здесь, там очень хорошо про это написано...
PM MAIL   Вверх
lollollollol
Дата 4.10.2013, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 287
Регистрация: 12.3.2013

Репутация: нет
Всего: нет



Не могу сообразить что от меня требуется

Код

onClick="alert(mousePageXY(e,this))"


Это сделал, function mousePageXY(elem) нужно менять?


Цитата

Кроссбраузерное решение

Универсальное решение для получения объекта события:
element.onclick = function(event) {
  event = event || window.event; // (*)
 
  // Теперь event - объект события во всех браузерах.
};



Не понимаю, объясните пожалуйста так, чтоб дошло
PM MAIL   Вверх
kin
Дата 4.10.2013, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 204
Регистрация: 9.5.2008

Репутация: 2
Всего: 6



Много извиняюсь, лопухнулся в торопях!
Код

onClick="alert(mousePageXY(e,this))"
 нужно заменить вот на это
Код

onClick="alert(mousePageXY(event,this))"
 в данном случае,именно event, а не как иначе

Цитата(lollollollol @  4.10.2013,  11:56 Найти цитируемый пост)
Это сделал, function mousePageXY(elem) нужно менять?

в определение функции нужно добавить еще один параметер, который будет принимать объект событие. Как он будет называться это без разницы.
Код

function mousePageXY(e,elem){тело функции}
 где e - объект событие
P.S. Проверил, работает в IE-10, FF-24



Это сообщение отредактировал(а) kin - 4.10.2013, 12:47
PM MAIL   Вверх
lollollollol
Дата 4.10.2013, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 287
Регистрация: 12.3.2013

Репутация: нет
Всего: нет



Не пойму почему у меня не работает, ошибка 
TypeError: window.event

Вот мой код:

Код

 <script language="javascript">
function mousePageXY(e,elem)
{
  var x = 0, y = 0;
  y_offset = elem.offsetTop;
  x_offset = elem.offsetLeft;
  if (window.event.pageX || window.event.pageY)
  {
    x = window.event.pageX;
    y = window.event.pageY;
  }
  else if (window.event.clientX || window.event.clientY)
  {
    x = window.event.clientX + 
      (document.documentElement.scrollLeft || document.body.scrollLeft) - 
      document.documentElement.clientLeft;
    y = window.event.clientY + 
      (document.documentElement.scrollTop || document.body.scrollTop) - 
      document.documentElement.clientTop;
  }
 var clickS = "x=" + (x - x_offset) + '&y=' + (y - y_offset); 
return clickS;
}
</script> 


вызываю точно так как вы показали.

пытался делать так:

Код


 <script language="javascript">
function mousePageXY(e,elem)
{
e = event || window.event; 
  var x = 0, y = 0;
  y_offset = elem.offsetTop;
  x_offset = elem.offsetLeft;
  if (e.pageX || e.pageY)
  {
    x = e.pageX;
    y = e.pageY;
  }
  else if (e.clientX || e.clientY)
  {
    x = e.clientX + 
      (document.documentElement.scrollLeft || document.body.scrollLeft) - 
      document.documentElement.clientLeft;
    y = e.clientY + 
      (document.documentElement.scrollTop || document.body.scrollTop) - 
      document.documentElement.clientTop;
  }
 var clickS = "x=" + (x - x_offset) + '&y=' + (y - y_offset); 
return clickS;
}
</script> 


И соответственно вызов mousePageXY(event,this)

Оба ваианта в опере работают, но в лисе по прежнему не хотят

Ошибка во втором варианте:
ReferenceError: event is not defined

Это сообщение отредактировал(а) lollollollol - 4.10.2013, 13:11
PM MAIL   Вверх
kin
Дата 4.10.2013, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 204
Регистрация: 9.5.2008

Репутация: 2
Всего: 6



Вот это строка 
Код
e = event || window.event;
 не нужна, e - это уже готовый объект-событие, с ним нужно просто работать.

PM MAIL   Вверх
CruorVult
Дата 4.10.2013, 14:24 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 868
Регистрация: 24.9.2008
Где: г.Киев, Украина

Репутация: 13
Всего: 28



Не
Код

e = event || window.event; 


а 

Код

e = e || window.event; 


Нужно думать хоть немножко а не копипастить
PM MAIL Skype   Вверх
lollollollol
Дата 4.10.2013, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 287
Регистрация: 12.3.2013

Репутация: нет
Всего: нет



Код

    
e = e || window.event; 


Вооо, спасибо!!!!! 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0593 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.