Javascript-форум (https://javascript.ru/forum/)
-   Internet Explorer (https://javascript.ru/forum/css-html-internet-explorer/)
-   -   ie и выпадающее меню onmouseover (https://javascript.ru/forum/css-html-internet-explorer/12899-ie-i-vypadayushhee-menyu-onmouseover.html)

gavnomaster 07.11.2010 23:11

ie и выпадающее меню onmouseover
 
http://test.soft-oskol.ru пример вот в Опере работает как надо, в ie же список скрывается сразу же, сижу уже час думаю что не так... Кто скажет как исправить?

top_nav.php
<?php

$out = "";
$out.= "<div class=\"top-nav-items\"><div class=\"top-nav-title\"><a href=\"$site/index.html\">Главная</a></div></div>";
$i = 1;
foreach ($base as $catname => $catArray) {
    $id = "subNav".($i++);
    $out.= "<div class=\"top-nav-items\" onMouseOver=\"javascript: ShowHide('$id');\" onMouseOut=\"javascript: ShowHide('$id');\">"
    ."<div class=\"top-nav-title\"><a href=\"$site/$catname/index.html\">$catArray[0]</a></div>";
    if (!empty($catArray)) {
        $out.= "<div id=\"$id\" class=\"collapsed\">";
        foreach ($catArray[1] as $k => $v) {
            $out.= "<div class=\"top-nav-item\"><a href=\"$site/$catname/$k.html\">$v[0]</a></div>";
        }
        $out.= "</div>";
    }
    $out.= "</div>";
}
$out.= "<div class=\"wrapper\"></div>";

?><script type="text/javascript">function ShowHide(id) { var obj = $(id); obj.className = (obj.className == "collapsed") ? "expanded" : "collapsed"; }</script><?php

echo $out;
unset($out);

?>

2de 08.11.2010 11:42

Открыл в ИЕ он матернулся на безопасность я разрешил выполнять скрипт и всё заработало.

Но во первых, это: id=\"$id\" почитайте из каких символов может состоять идентификатор. Во вторых в диве для которого Вы прописали событие есть ещё один вложеный, а это значит что попав мышкой на границу элемента показывается нужный див, но так как в этом диве содержится следующий див это значит что идет переход на другой элемент поэтому срабатывает событие овер из-за этого возможно и исчезает менюшка.

gavnomaster 08.11.2010 12:40

Цитата:

Но во первых, это: id=\"$id\" почитайте из каких символов может состоять идентификатор.
А из каких он состоит subNav1, subNav2, ... subNavn? Замечание не по теме. Там див контейнер .top-nav-items в котором див с названием раздела .top-nav-title, еще один див контейнер #subNavn, который по умолчанию скрыт. Так вот события работают с самым первым дивом контейнером, но почему-то только в одном ие всё неправильно обрабатывается, как понял это возможно связано с позиционированием(известн й баг в ие). Как решить?

2de 08.11.2010 13:05

Цитата:

Сообщение от gavnomaster (Сообщение 77990)
А из каких он состоит subNav1, subNav2, ... subNavn?

Извиняюсь, забыл что это ПХПшный код.

Попробуйте события из этого места

$out.= "<div class=\"top-nav-items\" onMouseOver=\"javascript: ShowHide('$id');\" onMouseOut=\"javascript: ShowHide('$id');\">"


перенести сюда

."<div class=\"top-nav-title\"><a href=\"$site/$catname/index.html\">$catArray[0]</a></div>";


и сделать ссылку блоком тоесть вот так:
$out.= "<div class=\"top-nav-items\">"
."<div class=\"top-nav-title\"><a href=\"$site/$catname/index.html\" onMouseOver=\"javascript: ShowHide('$id');\" onMouseOut=\"javascript: ShowHide('$id');\" style=\"display: block;\">$catArray[0]</a></div>";

gavnomaster 08.11.2010 13:11

Цитата:

Сообщение от 2de (Сообщение 77995)
Извиняюсь, забыл что это ПХПшный код.

Попробуйте события из этого места

$out.= "<div class=\"top-nav-items\" onMouseOver=\"javascript: ShowHide('$id');\" onMouseOut=\"javascript: ShowHide('$id');\">"


перенести сюда

."<div class=\"top-nav-title\"><a href=\"$site/$catname/index.html\">$catArray[0]</a></div>";


и сделать ссылку блоком тоесть вот так:
$out.= "<div class=\"top-nav-items\">"
."<div class=\"top-nav-title\"><a href=\"$site/$catname/index.html\" onMouseOver=\"javascript: ShowHide('$id');\" onMouseOut=\"javascript: ShowHide('$id');\" style=\"display: block;\">$catArray[0]</a></div>";

да так будет одинаково не работать и в опере(файерфоксе, хроме) и ишаке... мне не понятно почему в этом ублюдошном ишаке вечно всё что-то не так. я попробую a главным контейнером, и чтобы он содержимое показывал по хуверу.

Kolyaj 08.11.2010 13:20

Цитата:

Сообщение от gavnomaster
мне не понятно почему в этом ублюдошном ишаке вечно всё что-то не так

Всё дело в руках, не волнуйтесь.

2de 08.11.2010 13:35

Какая версия ИЕ? В 8 всё ок

gavnomaster 08.11.2010 14:03

Цитата:

Сообщение от 2de (Сообщение 78000)
Какая версия ИЕ? В 8 всё ок

да действительно обновил IE до восьмой версии(была седьмая) и всё заработало... Но все равно кто знает рецепт для 7 версии буду благодарен.

monolithed 08.11.2010 14:09

Цитата:

Сообщение от gavnomaster
обновил IE до восьмой версии(была седьмая) и всё заработало

Не самое обдуманное решение, т.к. IE6 еще активно пользуются

gavnomaster 09.11.2010 01:21

http://test.soft-oskol.ru/admin.php ладно пока можете в админке (пароль - 1) полазить. может кто посоветует что по части "дизайна".


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