powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Разночтения ie и ff
5 сообщений из 5, страница 1 из 1
Разночтения ie и ff
    #36017228
Индус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть такой код для tooltip ссылок. В ie работает, в ff - нет. Где разночтения браузеров?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="tooltip._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title></title>
    <script type="text/javascript">
        function ietruebody() {
            return (document.compatMode && document.compatMode != "BackCompat") ? document.documentElement : document.body
        }

        if (!document.layers && !document.all)
            event = "test"
        function showtip2(current, e, text) {

            if (document.all && document.readyState == "complete") {
                document.all.tooltip2.innerHTML = '<marquee style="border:1px solid black">' + text + '</marquee>'
                document.all.tooltip2.style.pixelLeft = event.clientX + ietruebody().scrollLeft + 10
                document.all.tooltip2.style.pixelTop = event.clientY + ietruebody().scrollTop + 10
                document.all.tooltip2.style.visibility = "visible"
            }

            else if (document.layers) {
                document.tooltip2.document.nstip.document.write('<b>' + text + '</b>')
                document.tooltip2.document.nstip.document.close()
                document.tooltip2.document.nstip.left = 0
                currentscroll = setInterval("scrolltip()", 100)
                document.tooltip2.left = e.pageX + 10
                document.tooltip2.top = e.pageY + 10
                document.tooltip2.visibility = "show"
            }
        }
        function hidetip2() {
            if (document.all)
                document.all.tooltip2.style.visibility = "hidden"
            else if (document.layers) {
                clearInterval(currentscroll)
                document.tooltip2.visibility = "hidden"
            }
        }

        function scrolltip() {
            if (document.tooltip2.document.nstip.left >= -document.tooltip2.document.nstip.document.width)
                document.tooltip2.document.nstip.left -= 5
            else
                document.tooltip2.document.nstip.left = 150
        }

</script>
</head>
<body>


    <form id="form1" runat="server">
    <div id="tooltip2" style="position:absolute;visibility:hidden;clip:rect(0 150 50 0);width:150px;background-color:Yellow">
    <layer name="nstip" width=1000px bgColor="lightyellow"></layer>
    </div>
    <center>
		<a onmouseover="showtip2(this,event,'Visit Devasp for articles and much more!')" onmouseout="hidetip2()" href="http://www.devasp.com">Devasp</a><br/>
		<a onmouseover="showtip2(this,event,'Visit Yahoo for free mail account!')" onmouseout="hidetip2()" href="http://www.yahoo.com">Yahoo</a><br/>
		<a onmouseover="showtip2(this,event,'Visit MSN for free mail account and much much more things!')" onmouseout="hidetip2()" href="http://www.msn.com">MSN</a><br/>
		<a onmouseover="showtip2(this,event,'Visit Google for more space of mail account space !')" onmouseout="hidetip2()" href="http://www.google.com">Google</a><br/>
		
    </center>
    </form>
</body>
</html>
...
Рейтинг: 0 / 0
Разночтения ie и ff
    #36017244
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Н-да, это прям больше похоже на какой-то клон языка, нежели на javascript ...

- хотя на отсутствие оканчивающих точек с запятой интерпретатор смотри спустя рукава, но все же очень советуется ставить их;
- document.all.xxxx и document.xxxx - так работает только ИЕ, для кроссбраузерности надо обращаться через id: getElementById();
- layer - пережиток прошлого, обычно используют див с абсолютным позиционированием и z-index;
- установка размерности допустима только в стилях, при указании атрибутов это всегда пиксели (или проценты), "px" ставить не надо;
- в стилях всегда надо ставить размерность (очень настоятельно советуется, чтобы не было разночтения браузерами);
- не староват ли доктайп?
...
Рейтинг: 0 / 0
Разночтения ie и ff
    #36017286
Индус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Учёл замечания и сократил до вот так. Пока всё также.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
<script type="text/javascript">
        function ietruebody() {
            return document.getElementsByTagName("body")
        }
        
        function showtip2(current, e, text) {

            
                document.getElementById("tooltip2").innerHTML = '<marquee style="border:1px solid black">' + text + '</marquee>';
                document.getElementById("tooltip2").style.pixelLeft = event.clientX + ietruebody().scrollLeft +  10 ;
                document.getElementById("tooltip2").style.pixelTop = event.clientY + ietruebody().scrollTop +  10 ;
                document.getElementById("tooltip2").style.visibility = "visible";
            
        }
        function hidetip2() {
            document.getElementById("tooltip2").visibility = "hidden";
            }
        

        function scrolltip() {
            if (document.getElementById("tooltip2").document.getElementById("nstip").left >= -document.getElementById("tooltip2").document.getElementById("nstip").document.width)
                document.getElementById("tooltip2").document.getElementById("nstip").left -=  5 
            else
                document.getElementById("tooltip2").document.getElementById("nstip").left =  150 
        }

</script>
...
Рейтинг: 0 / 0
Разночтения ie и ff
    #36017426
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из того, что снова увидел:

- ietruecbode() возвращает не элемент, а коллекцию элементов (из одного элемента);
- странно, что в функцию передается событие е, но работа ведется с объектом event;
- для кроссбраузерности объект event явно не передается, нужна проверка в функции типа такой if (!e) _e = event; и работать с переменной _e.

Похвально, что хочется все делать ручками, но достаточно удобно воспользоваться, скажем, jQuery, где одной функцией можно определить абсолютное положение объекта и туда вывести свой тултип. Или и вовсе воспользоваться готовыми решениями - кроссбраузерными, рабочими, правильными и красивыми.
...
Рейтинг: 0 / 0
Разночтения ie и ff
    #36018529
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
document.getElementById("tooltip2").document.getElementById("nstip").left
хрень какая
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Разночтения ie и ff
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]