Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: проблемы с FireFox - has no properties
 
 автор: bronenos   (30.04.2007 в 17:33)   письмо автору
 
 

В моем чате появились 2 проблемы.
Первая заключается в том, что...
document.onkeydown = function (e)
{
  var el = e.srcElement;
  /* .... */
}

выдает, что has no properties...
то же самое делается в строке
getById('ignored').innerHTML = 'Игнор: ' + users.join(', ');

сама функция
function getById (id)
{
  if (document.getElementById)
    return document.getElementById (id);
  if (document.all)
    return document.all[id];
  if (document.layers)
    return document.layers[id];
}

хотя можно было бы сократить до
function getById (id)
{
  var d = document;
  if (d.getElementById) return d.getElementById (id);
  if (d.all) return d.all[id];
  if (d.layers) return d.layers[id];
}

Прошу помочь, так как все это в Опере и ИЕ работает наура!

   
 
 автор: CNT   (30.04.2007 в 18:24)   письмо автору
 
   для: bronenos   (30.04.2007 в 17:33)
 

1. FF не понимает srcElement - у него для этого случая имеется свойство target, т.е.
для IE и Opera: var el = event.srcElement;
для FF: var el = e.target;

2. ошибки в самой функции getById (id) я не вижу. Видимо, что-то парсеру не нравится вне функции - проверьте наличие самого объекта 'ignored' в документе

   
 
 автор: bronenos   (30.04.2007 в 18:40)   письмо автору
 
   для: CNT   (30.04.2007 в 18:24)
 

> проверьте наличие самого объекта 'ignored' в документе

с ним проблем нет - опера и ие, как я уже сказал, работают нормально

   
 
 автор: bronenos   (30.04.2007 в 18:49)   письмо автору
 
   для: CNT   (30.04.2007 в 18:24)
 

все то же...
document.onclick = function (e)
{
  try { var el = e.srcElement; }
  catch (e) { var el = e.target; }

  menuX = e.clientX + document.body.scrollLeft;
  menuY = e.clientY + document.body.scrollTop;
  switch (el.id)
  {
    case 'td_item': break;
    case 'nick': menu_load (el.innerHTML); break;
    default: menu_close(); break;
  }
  return true;
}


пробовал и
try { var el = e.srcElement; }
catch (e) { var el = e.target; }
и
try { var el = window.event.srcElement; }
catch (e) { var el = window.event.target; }

   
 
 автор: CNT   (30.04.2007 в 19:10)   письмо автору
 
   для: bronenos   (30.04.2007 в 18:49)
 

Странно вы как-то пробуете... прям как Александр Васильевич... "через Альпы"

<html><head>
<script>
document.onclick = function (e)
{
var el = (navigator.userAgent.indexOf ('Firefox') > 0) ? e.target : event.srcElement;

alert (el.innerHTML);
}
</script>
</head><body>
<h1>Кликни</h1>
</body></html>

   
 
 автор: bronenos   (30.04.2007 в 20:53)   письмо автору
 
   для: CNT   (30.04.2007 в 19:10)
 

ха, я точно так же и сделал только что... ))
все равно так же =( даже на target

var is_ff = (navigator.userAgent.toLowerCase().indexOf('firefox') != -1);
var el = (!is_ff) ? e.srcElement : e.target;

   
 
 автор: ilyaILF   (01.05.2007 в 01:51)   письмо автору
 
   для: bronenos   (30.04.2007 в 20:53)
 

Может это http://www.w3schools.com/js/tryit.asp?filename=try_dom_event_srcelement поможет.

   
 
 автор: bronenos   (01.05.2007 в 07:07)   письмо автору
 
   для: ilyaILF   (01.05.2007 в 01:51)
 

а как тогда сделать
чтоб передавалось в качестве параметра событие, тип так? так вроде не пашет...
по ссылке все то же самое что и у меня в целом

document.onclick = function (window.event) {}

   
 
 автор: ilyaILF   (01.05.2007 в 08:06)   письмо автору
 
   для: bronenos   (01.05.2007 в 07:07)
 

А в этой записи
document.onclick = function (window.event) {}
равно как и в этой
document.onkeydown = function (e) 

  var el = e.srcElement; 
  /* .... */ 

После слова function разве не полагается давать имя этой функции, как например:
document.onclick = function myfunction(window.event) {}

   
 
 автор: CNT   (01.05.2007 в 08:40)   письмо автору
 
   для: CNT   (30.04.2007 в 19:10)
 

Вариант 30.04.2007 в 19:10 AS IS (т.е. приведённый код, точно сохранённый в виде отдельного файла) в ваших браузерах (MSIE, Opera, FF) работает?

Если работает, тогда ищите ошибку не в передаче функции event'a (с этим всё в порядке), а в чём-то ином... своём...

   
 
 автор: bronenos   (01.05.2007 в 09:06)   письмо автору
 
   для: CNT   (01.05.2007 в 08:40)
 

document.onclick = function (e)
здесь будет передано событие?

   
 
 автор: CNT   (01.05.2007 в 09:44)   письмо автору
 
   для: bronenos   (01.05.2007 в 09:06)
 

Повторяю вопрос - код в виде отдельного файла работает во всех ваших браузерах?
Или не работает?

Если работает, то, как думаете, событие передаётся или не передаётся?

PS. Обратите внимание на код: для "неFirefox" передаваемое значение не используется, а прописывается event.srcElement

   
 
 автор: ilyaILF   (01.05.2007 в 10:14)   письмо автору
 
   для: CNT   (01.05.2007 в 09:44)
 

Если это поможет избавиться от ошибки в FF (has no properties):
<style>
body
    {height: 100%;}
</style>

то возможно проблемы с версткой.

   
 
 автор: bronenos   (01.05.2007 в 10:15)   письмо автору
 
   для: CNT   (01.05.2007 в 09:44)
 

работает в других
поправка, не работает...
но зато var e = window.event работает
а фф не хочет ни e.srcElement ни e.target

   
 
 автор: ilyaILF   (01.05.2007 в 10:23)   письмо автору
 
   для: bronenos   (01.05.2007 в 10:15)
 

Попробуйте, это вариант исключительно для FF, пока в нем не задана высота, она считается нулевой и при щелчке мышью объект получается что просто отсутствует, отсюда и подобная ошибка, мне кажется так.
Попробуйте результат работы вложенного файла на основе примера, предложенного CNT со стилями html и body - height: 100%; и отдельно убирая стили html и отдельно убирая стили body (можно и без доктайпа пробовать) в FF.

   
 
 автор: bronenos   (01.05.2007 в 10:43)   письмо автору
 
   для: CNT   (01.05.2007 в 09:44)
 

http://phx.freedomf.net/chat/sources/jscripts/chat.js
в самом верху

   
 
 автор: bronenos   (01.05.2007 в 13:33)   письмо автору
 
   для: bronenos   (01.05.2007 в 10:43)
 

все, работает... что то сделал, не знаю что, но заработало

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования