Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #28, МАРТ 2003 г.

TIPS OF WEB: грузим без динамы, динамим, чтобы не грузить!

Sevranty

Спецвыпуск Xakep, номер #028, стр. 028-114-3


<script>

<!--

dom = (document.getElementById) ? true : false;

nn4 = (document.layers) ? true : false;

ie = (document.all) ? true : false;

ie4 = ie && !dom;

function empty(){}

if(nn4) document.captureEvents(Event.MOUSEMOVE);

document.onmousemove = stdMouseMove;

var stdMouseX = -1, stdMouseY = -1;

var MouseMoved = 0;

var hint="";

var MouseMove = empty;

var Init = empty;

function stdMouseMove(e)

{

stdMouseX = (nn4) ? (e.pageX):(event.x + document.body.scrollLeft);

stdMouseY = (nn4) ? (e.pageY):(event.y + document.body.scrollTop);

MouseMoved++;

MouseMove(e);

HintMouseMove();

}

function HintMouseMove()

{

if(hint)moveElem(hint, stdMouseX+10, stdMouseY+10);

}

function showElem(elemId) {

if (dom) document.getElementById(elemId).style.visibility = "visible";

else if (ie4) document.all[elemId].style.visibility = "visible";

else if (nn4) document.layers[elemId].visibility = "show";

}

function hideElem(elemId) {

if (dom) document.getElementById(elemId).style.visibility = "hidden";

else if (ie4) document.all[elemId].style.visibility = "hidden";

else if (nn4) document.layers[elemId].visibility = "hide";

}

function moveElem(idname,x,y)

{

if (dom)

with(eval(idname)){

style.left = x;

style.top = y;

}

else if(nn4){

document.layers[idname].left=x;

document.layers[idname].top=y;

}

}

function OverIm(id)

{

if(hint)hideElem(hint);

hint=id;

moveElem(hint, stdMouseX+10, stdMouseY+10);

showElem(hint);

}

function OutIm()

{

hideElem(hint);

hint="";

}

//-->

</script>

Коротко опишу то, что накатано выше. Вначале детектим браузер и описывает вариейбалсы (хе-хе! переменные :)). Потом набиваем несколько функций: отлов мышки, расчет местоположения подсказки, вывод элементов, отключение элементов, перемещение элементов, запуск необходимых функций при наведении и выключение при уходе мышки. При наличии аналитического ума и фантазии последние 2 функции можно расширить еще большим количеством элементов.

Теперь на картинку или ссылку (можно и на другое место привесить) вешаем вызов наших функций. На onmouseover запуск с id нашего div'а в параметре и onmouseout выключение показа, соответственно:

<a href="#" onmouseover="OverIm('hint1');" onmouseout="OutIm()"><img src="/xakep/a-002/img1_small.gif" width="60" height="60" border="0" alt=""></a>

После того как мы привесили всю эту фигню, осталось написать див с соответствующим контентом. Я от перегрева сварганил такое непотребство:

<div id="hint1" style="position: absolute; visibility: hidden; width: 160px; top: 0px; left: 0%;">

<table cellpadding="1" cellspacing="0" border="0" width="100%" bgcolor="#999999"><tr><td width="100%">

<table cellpadding="3" cellspacing="0" border="0" width="100%" bgcolor="#ffffff"><tr bgcolor="#ffffff">

<td><img src="/xakep/a-002/help.gif" width="30" height="30" alt="" border="0"></td>

<td> </td>

<td width="100%">

<b>Аналог всплывающей подсказки</b>

Назад на стр. 028-114-2  Содержание  Вперед на стр. 028-114-4