Полезная информация

Список ответов на каверзные вопросы можно получить в FAQ-разделе форума.

№108-06-2008 18:47:06

bugger
Участник
 
Группа: Members
Зарегистрирован: 08-06-2008
Сообщений: 3
UA: Opera 9.2

Проблема с раскрывающимся JavaScript-меню

Здравствуйте. Вынужден обратиться за помощью из-за следующей проблемы: При включенной поддержке ЯваСкрипт меню хорошо работает в IE 6-7, Opera 9, но упорно отказывается открываться/закрываться в Mozilla Firefox 2.... В консоли ошибок жалуется на window.event (в 9 строчке скрипта). Пробовал сам чего-то шаманить - не получилось.

Код скрипта:

Выделить код

Код:

<SCRIPT language=JavaScript>
var img1 = new Image();
img1.src = "plus.gif";
var img2 = new Image();
img2.src = "minus.gif";

function doOutline() {
  var srcId, srcElement, targetElement;
  srcElement = window.event.srcElement;
  if (srcElement.className.toUpperCase() == "LEVEL1" || srcElement.className.toUpperCase() == "FAQ") {
		 srcID = srcElement.id.substr(0, srcElement.id.length-1);
		 targetElement = document.getElementById(srcID + "s");
		 srcElement = document.getElementById(srcID + "i");

  	if (targetElement.style.display == "none") {			
				 targetElement.style.display = "";
		 		 if (srcElement.className == "LEVEL1") srcElement.src = img2.src;
     	} else {
				 targetElement.style.display = "none";
				 if (srcElement.className == "LEVEL1") srcElement.src = img1.src;
     }
  }
}

document.onclick = doOutline;

</SCRIPT>

HTML-код меню:

Выделить код

Код:

&nbsp;<IMG 
      border=0 src="mstr1.gif">&nbsp;<A 
      class=Level2 
      href="index.php"><B>Главная</B></A><BR>
&nbsp;<IMG 
      border=0 src="mstr1.gif">&nbsp;<A 
      class=Level2 
      href="/forum/index.php" target="_blank"><B>Форум</B></A><BR>

&nbsp;<b><A class=Level1 id=OUT0t><IMG border=0 
      class=LEVEL1 id=OUT0i 
      src="plus.gif" style="cursor: pointer;">&nbsp;Футбол</A></b><BR>
      <DIV id=OUT0s style="DISPLAY: none">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<IMG 
      src="none.gif" width="9" height="9">&nbsp;<A class=Level2 
      href="index.php?do=cat&category=main"><b>Новости</b></A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<IMG 
      src="none.gif" width="9" height="9">&nbsp;<A class=Level2 
      href="index.php?do=cat&category=inter"><b>Интервью</b></A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<IMG 
      src="none.gif"><A class=Level2 
      href="index.php?do=cat&category=trans"><b>Трансферы</b></b></A>&nbsp;<img 

src="http://football.net.sumy.ua/templates/Art/images/New.gif" align="middle"><BR></DIV>&nbsp;<b><A 
      class=Level1 id=OUT1t><IMG border=0 class=LEVEL1 id=OUT1i 
      src="plus.gif" style="cursor: pointer;">&nbsp;Матчи</A></b><BR>
      <DIV id=OUT1s style="DISPLAY: none">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<IMG 
      src="none.gif">&nbsp;<A class=Level2 
      href="index.php?do=cat&category=pre"><b>Анонсы матчей</b></A>&nbsp;<img 

src="http://football.net.sumy.ua/templates/Art/images/New.gif" 

align="middle"><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<IMG 
      src="none.gif">&nbsp;<A class=Level2 
      href="index.php?do=cat&category=match"><b>Обзоры матчей</b></A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<IMG 
      src="none.gif">&nbsp;<A class=Level2 
      href="index.php?do=static&page=live"><b>Онлайн-результаты</b></A><BR></DIV>&nbsp;<b><A class=Level1 

id=OUT2t><IMG border=0 
      class=LEVEL1 id=OUT2i 
      src="plus.gif" style="cursor: pointer;">&nbsp;Медиа</A></b><BR>
      <DIV id=OUT2s style="DISPLAY: none">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<IMG 
      src="none.gif">&nbsp;<A class=Level2 
      href="index.php?do=cat&category=foto"><b>Фото</b></A>&nbsp;<img 

src="http://football.net.sumy.ua/templates/Art/images/New.gif" 

align="middle"><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<IMG 
      src="none.gif">&nbsp;<A class=Level2 
      href="index.php?do=cat&category=video"><b>Видео</b></A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<IMG 
      src="none.gif">&nbsp;<A class=Level2 
      href="index.php?do=cat&category=rasp"><b>Юмор</b></A><BR></DIV>&nbsp;<b><A class=Level1 id=OUT3t><IMG 

border=0 
      class=LEVEL1 id=OUT3i 
      src="plus.gif" style="cursor: pointer;">&nbsp;Информация</A></b><BR>
      <DIV id=OUT3s style="DISPLAY: none">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<IMG 
      src="none.gif">&nbsp;<A class=Level2 
      href="index.php?do=cat&category=hist"><b>Истории</b></A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<IMG 
      src="none.gif">&nbsp;<A class=Level2 
      href="index.php?do=cat&category=biogr"><b>Биографии</b></A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<IMG 
      src="none.gif">&nbsp;<A class=Level2 
      href="index.php?do=static&page=ratclubs"><b>Рейтинг 

клубов</b></A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<IMG 
      src="none.gif">&nbsp;<A class=Level2 
      href="index.php?do=static&page=ratcountries"><b>Рейтинг 

стран</b></A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<IMG 
      border=0 src="none.gif">&nbsp;<A 
      class=Level2 
      href="index.php?do=cat&category=other"><B>Разное</B></A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<IMG 
      border=0 src="none.gif">&nbsp;<A 
      class=Level2 
      href="index.php?do=cat&category=links"><B>Ссылки</B></A><BR></DIV>
      &nbsp;<IMG 
      border=0 src="none.gif">&nbsp;<A 
      class=Level2 
      href="index.php?do=cat&category=mini"><B>Минифутбол</B></A><BR>
      &nbsp;<IMG 
      border=0 src="none.gif">&nbsp;<A 
      class=Level2 
      href="index.php?do=cat&category=virt"><B>Киберспорт</B></A><BR>
&nbsp;<IMG 
      border=0 src="mstr2.gif">&nbsp;<A 
      class=Level2 
      href="index.php?do=sms"><B>Отправить SMS</B></A><BR>
&nbsp;<IMG 
      border=0 src="mstr2.gif">&nbsp;<A 
      class=Level2 
      href="index.php?do=tv-program"><B>Телепрограмма</B></A>&nbsp;<img 

src="http://football.net.sumy.ua/templates/Art/images/New.gif" align="middle"><BR>
&nbsp;<IMG 
      border=0 src="mstr2.gif">&nbsp;<A 
      class=Level2 
      href="index.php?do=arcade"><B>Футбол flash-игры</B></A>&nbsp;<img 

src="http://football.net.sumy.ua/templates/Art/images/New.gif" align="middle"><BR>
&nbsp;<IMG 
      border=0 src="mstr2.gif">&nbsp;<A 
      class=Level2 
      href="index.php?do=faq"><B>Конференции</B></A>&nbsp;<img 

src="http://football.net.sumy.ua/templates/Art/images/New.gif" align="middle"><BR>

&nbsp;<b><A class=Level1 id=OUT4t><IMG border=0 
      class=LEVEL1 id=OUT4i 
      src="plus.gif" style="cursor: pointer;">&nbsp;Помощь</A></b><BR>
      <DIV id=OUT4s style="DISPLAY: none">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<IMG 
      src="mstr1.gif">&nbsp;<A class=Level2 
      href="index.php?newsid=6"><b>Как добавить новость</b></b></A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<IMG 
      src="mstr1.gif" width="9" height="9">&nbsp;<A class=Level2 
      href="index.php?do=static&page=dc"><b>Помощь по DC++</b></A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<IMG 
      src="mstr1.gif" width="9" height="9">&nbsp;<A class=Level2 
      href="index.php?do=static&page=tor"><b>Помощь по Torrent</b></A><BR></DIV>


&nbsp;<b><A class=Level1 id=OUT5t><IMG border=0 
      class=LEVEL1 id=OUT5i 
      src="plus.gif" style="cursor: pointer;">&nbsp;О Портале</A></b><BR>
      <DIV id=OUT5s style="DISPLAY: none">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<IMG 
      src="mstr1.gif" width="9" height="9">&nbsp;<A class=Level2 
      href="index.php?do=static&page=admin"><b>Наша команда</b></A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<IMG 
      src="mstr1.gif" width="9" height="9">&nbsp;<A class=Level2 
      href="index.php?newsid=272"><b>Правила портала</b></A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<IMG 
      src="mstr1.gif">&nbsp;<A class=Level2 
      href="index.php?do=static&page=disclaimer"><b>Disclaimer</b></b></A><BR></DIV><br />
<a href="index.php?do=static&page=javascipt">Не работает меню?</a>

Заранее спасибо за помощь!

Отредактировано bugger (08-06-2008 18:48:03)

Отсутствует

 

№208-06-2008 19:15:25

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 3.0

Re: Проблема с раскрывающимся JavaScript-меню

Выделить код

Код:

function doOutline(e) {
  e = e || window.event;
  var tar = e.target || e.srcElement;
  // ...
}
document.onclick = doOutline;

Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№308-06-2008 19:53:54

bugger
Участник
 
Группа: Members
Зарегистрирован: 08-06-2008
Сообщений: 3
UA: Opera 9.2

Re: Проблема с раскрывающимся JavaScript-меню

Так?..

Выделить код

Код:

<SCRIPT language=JavaScript>
var img1 = new Image();
img1.src = "plus.gif";
var img2 = new Image();
img2.src = "minus.gif";

function doOutline(e) {
  e = e || window.event;
  var tar = e.target || e.srcElement;
  var srcId, srcElement, targetElement;
  srcElement = window.event.srcElement;
  if (srcElement.className.toUpperCase() == "LEVEL1" || srcElement.className.toUpperCase() == "FAQ") {
		 srcID = srcElement.id.substr(0, srcElement.id.length-1);
		 targetElement = document.getElementById(srcID + "s");
		 srcElement = document.getElementById(srcID + "i");

  	if (targetElement.style.display == "none") {			
				 targetElement.style.display = "";
		 		 if (srcElement.className == "LEVEL1") srcElement.src = img2.src;
     	} else {
				 targetElement.style.display = "none";
				 if (srcElement.className == "LEVEL1") srcElement.src = img1.src;
     }
  }
}

document.onclick = doOutline;

</SCRIPT>

Отсутствует

 

№408-06-2008 20:15:35

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 3.0

Re: Проблема с раскрывающимся JavaScript-меню

Так?..

Эммм... Я суть показывал (в код особо не вникал).
А суть в том, что в Firefox нет window.event, а объект event непосредственно передается в функцию в виде аргумента. И у event нет свойства srcElement, но есть event.target

Выделить код

Код:

function doOutline(e) {
  e = e || window.event;
  var srcId, srcElement, targetElement;
  srcElement = e.target || e.srcElement;
  if (srcElement.className.toUpperCase() == "LEVEL1" || srcElement.className.toUpperCase() == "FAQ")
  // ...
}
document.onclick = doOutline;

И не проще ли найти реализацию поновее ;)

Отредактировано Infocatcher (08-06-2008 20:15:52)


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№508-06-2008 21:05:35

bugger
Участник
 
Группа: Members
Зарегистрирован: 08-06-2008
Сообщений: 3
UA: Opera 9.2

Re: Проблема с раскрывающимся JavaScript-меню

Спасибо огромное!!! Заработало...
Что имеем, то и храним :)

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]