Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.06.2009, 20:49
Интересующийся
Отправить личное сообщение для slim-v Посмотреть профиль Найти все сообщения от slim-v
 
Регистрация: 04.06.2009
Сообщений: 11

Проблемы с MouseMove в FireFox
Если повесить на элемент обработчики событий MouseMove и MouseOut, в FireFox наблюдаеться странная ситуация. При срабатывании MouseMove FireFox сам начинает генерировать событие MouseOut. Опера и ИЕ вызывают MouseOut только при отводе курсора с элемента, как и должно быть. Хотелось бы узнать как побороть эту штуку в FireFox.
Ответить с цитированием
  #2 (permalink)  
Старый 04.06.2009, 21:50
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

телепаты в отпуске
код в студию
вы делаете что-то неправильно, потому что такого быть не может, чтобы браузер без причины генерировал события
Ответить с цитированием
  #3 (permalink)  
Старый 05.06.2009, 01:33
Интересующийся
Отправить личное сообщение для slim-v Посмотреть профиль Найти все сообщения от slim-v
 
Регистрация: 04.06.2009
Сообщений: 11

Сообщение от Gvozd Посмотреть сообщение
телепаты в отпуске
код в студию
вы делаете что-то неправильно, потому что такого быть не может, чтобы браузер без причины генерировал события
Ну вот код собственно. Знаю написано криво, но ничего не нашел готового на эту тему, да и учиться лучше на своих ошибках. Собственно задача скрипта, показывать при наводе на элемент картинку (в данном случае только на спан). В ИЕ и Опере все работает, а вот в ФФ, ну выше написал, что получается . Голову уже себе сломал, не могу понять что делаю не так.


function defPosition(event) {
var x = y = 0;
if (document.attachEvent != null) { // Internet Explorer & Opera
x = window.event.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
y = window.event.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
} else if (!document.attachEvent && document.addEventListener) { // Gecko
x = event.clientX + window.scrollX;
y = event.clientY + window.scrollY;
} else {
// Do nothing
}
return {x:x, y:y};
}



function Init()
{
var img=document.getElementsByTagName('span');

for(var i=0;i<img.length-1;i++)
{
if(img[i].getAttribute("show_big_img")=="On")
{

img[i].onmousemove=function(obj)
{
Show_img_popap(obj,this)
}

img[i].onmouseout=function()
{
Hide_img_popap(this);
}
}
}

}

function Show_img_popap(evt,obj)
{

if(document.getElementById("imaga_"+obj.id)==null)
{
div_img=document.createElement('DIV');
div_img.style.display='block';
div_img.style.position='absolute';
div_img.style.left=defPosition(evt).x;
div_img.style.top=defPosition(evt).y;
div_img.style.padding="20px";
div_img.id="imaga_"+obj.id;
img_obj=document.createElement('img');
img_obj.src=obj.getAttribute("path");
img_obj.style.display='block';
document.body.appendChild(div_img);
div_img.appendChild(img_obj);
}
else
{
obj=document.getElementById("imaga_"+obj.id);
obj.style.display="block";
obj.style.left=defPosition(evt).x;
obj.style.top=defPosition(evt).y;
}
}

function Hide_img_popap(obj)
{
obj=document.getElementById("imaga_"+obj.id);
obj.style.display="none";
}



window.onload = function () { Init(); }



<h2><span id="img1" show_big_img="On" path="/user_files/2930image006.gif">Текст</span></h2>
Ответить с цитированием
  #4 (permalink)  
Старый 05.06.2009, 02:08
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

а)у вас ошибка в цикле.ну, это я думаю вы порсто опечатались на форум перенося, иначе бы нигде у вас вообще не работало
for(var i=0;i<img.length-1;i++)//неверно
for(var i=0;i<img.length;i++)

б)в данном случае у вас просто при проявлении дива с риснуком, крусор мыши оказывается как раз над ним. связано это со стилями, и их разной отработкой в разных бразуерах
самая простейшая заплатка такая:
obj.style.left=defPosition(evt).x;
obj.style.top=defPosition(evt).y;

меняем на:
obj.style.left=defPosition(evt).x+1;
obj.style.top=defPosition(evt).y+1;
Ответить с цитированием
  #5 (permalink)  
Старый 05.06.2009, 02:40
Интересующийся
Отправить личное сообщение для slim-v Посмотреть профиль Найти все сообщения от slim-v
 
Регистрация: 04.06.2009
Сообщений: 11

Ага, пасиб большое. Все заработало.

Еще один вопрос. Каким образом можно сделать так, что бы до того пока картинка полностью не загрузиться див не появлялся. Интересует в первую очередь самый правильный способ проверки загрузилась ли полностью картинка или нет.
Ответить с цитированием
  #6 (permalink)  
Старый 05.06.2009, 02:44
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

у элемента image есть событие onload
только назначать его надо до назначения src картинки
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт меню не работает только в Firefox somatic Firefox/Mozilla 2 28.07.2009 03:23
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37
В Mozilla Firefox 3.0 проблемма с Javascript меню artmedia Элементы интерфейса 1 07.09.2008 10:43
FireFox: onmouseover не работает при зажатой кнопке мыши no. Общие вопросы Javascript 4 19.08.2008 13:43
Greasemonkey & javascript & bgsound & firefox random2 Общие вопросы Javascript 1 02.07.2008 11:25