IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Веб-программирование (http://www.imho.ws/forumdisplay.php?f=29)
-   -   глобальная проблема IFRAME (http://www.imho.ws/showthread.php?t=101122)

он_Кофе 21.03.2006 14:38

глобальная проблема IFRAME
 
такой пример есть две ячейки
<tr>
<td></td>
<td></td>
</tr>

в первой название меню, во второй подменю,
....
<script language="JavaScript">
function showdiv(id, num) {
document.getElementById(id).style.display = num ? "block" : "none";
}
</script>
....
<tr>
<td onMouseOver="showdiv('1', 1)" onMouseOut="showdiv('1', 0)">название меню</td>
<td>
<div id="1"><iframe src=""></iframe></div>
</td>
</tr>

Задача в том чтобы при наведении курсора на первый пункт меню, слева появлялось подменю... Везде работает, но опера не хочет работать: подвожу курсор, подменю появляется, но как только я хочу навести на него мышкой, оно сразу исчезает, хотя во всех других броузерах все нормально... Если убрать <iframe> то и в Opera все нормально работает, но без <iframe> нельзя, так как когда рядом с меню появляются элементы форм, или flash-анимация, то они накладываются на появляющийся слой - пробовал z-index не спасает... спасает только <iframe>... Как быть с Opera?

Raven B. 23.03.2006 19:15

1. ЭЭЭЭ... При всем уважении, у тебя в коде написано что при выводе курсора за область ячейки с надписью название меню вторая ячейка должна исчезнуть... Когда ты наводишь курсор на появившееся меню то выходишь за границы этой ячейки. Так что как раз опера ведет себя правильно...
И iframe тут абсолютно не причем...
Решение:
а. сворачивать по клику пользователя на какой то триггер
б. сворачивать по прошествию периода времени (setinterval или что то вроде), когда пользователь не двигал там мышкой (onMouseMove)
2. Что касается перекрытия в опере.
а. Z-index поставь большой. 100 например.
б. ниже не должно быть элементов с position: relative или absolute. Иначе они всегда будут перкрывать твою менюшку.
в. если там никак без такого позиционирования не обойтись - расположи меню после этих элементов по тексту, а затем перемети их в нужное положение програмно.

Да, еще одно:
id не должно начинатся с цыфры...
проверь валидатором =)

он_Кофе 24.03.2006 19:43

спасибо!

Raven B. 24.03.2006 20:27

Незачто.
Спасибы лутше в репутацию ;)
А то модераторы плюсят.
Если будут проблемы с реализацией - пиши.

Hubbitus 27.03.2006 12:30

он_Кофе, раз уж у тебя темы 2, то отвечу здесь, с твоего позволения, чтобы не флудить тут http://www.imho.ws/showthread.php?p=1151684#post1151684

Итак:
Цитата:

он_Кофе:
Абсолютное позиционирование в моем случае не пожходит, так как время от времени на самом верху у меня появляется баннер... тогда придется под каждый банер менять абсолютное позиционирование...
Зачем, его можно просто рассчитывать динамически, например по координатам возникшего события, вот и все, все просто.

Цитата:

он_Кофе:
попробовал убрать div и скрывать табличку рядом... что-то не работает...
А я попробовал, у меня работает, как и писал Опера 8.53, получается нечто следующее, работоспособное в Опере:
Код:

<script language="JavaScript">
var innn = 0;

function showdiv(id, num) {
    if (num ==0){
        if (innn == 0){innn =1;}
        else{
        innn = 0;    //Вошли, в меню
        document.getElementById(id).style.display = "none";
        }
    }
    else{
    document.getElementById(id).style.display = "block";
    }
//document.getElementById(id).style.display = num ? "block" : "none";
}
</script>

<table border=0 align=left style="margin:0; padding:0">
    <tr onMouseOver="showdiv('ttt1', 1)">
        <td>название меню</td>
        <td></td>
    </tr>
</table>
<div style="border: 1px solid red; width:220; height: 210" onMouseOut="showdiv('ttt1', 0)" id="ttt1">
<iframe src="iframe.htm" style="margin: auto; width:200; height: 200; display: block" frameborder=0 align=middle></iframe></td>
</div>



Часовой пояс GMT +4, время: 22:00.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.