Как это,
[ вот небольшая страница, иллюстрирующая мою проблему ] (проблема появляется в Firefox)
Итак, у меня есть функция onmouseout="regress(event, this)"
, которая проверяет, действительно ли мышь вышла за пределы текущего элемента и любого из его дочерних элементов. ( подробнее о том, почему я это сделал и в чем дело ).
Если мышь действительно снаружи, я хочу остановить анимацию на кнопке и сбросить таймер (что я и сделал). И это работает.
Только это не так. В Firefox (протестированном v5.0) это так. Я получаю ошибку, связанную с DOM. parentNode
элемента, который вызвал функцию, является "", и тогда его родителем будет "undefined", а затем я получаю ошибку, и код взрывается.
Вот загадочная часть: эта ошибка возникает, только когда мышь действительно выходит из области кнопок. Есть еще один случай, когда срабатывает событие onmouseout (во избежание которого я использую эту функцию). Который переходит от дочернего элемента кнопки к другому дочернему элементу кнопки. В этом случае parentNode
работает нормально, переходя от buttonChild к button to buttonParent к blabla to BODY и затем останавливается.
Мой вопрос: почему неопределенная ошибка появляется в одном случае, а не в другом. Имейте в виду, что в Chrome или IE9 нет ошибок. И как мне это исправить?
Это сбивает меня с толку. Спасибо за любую помощь.
Я сбит с толку.
Также здесь есть функция javascript:
function regress(evt, x){
//if (!e && window.event)
if (window.event)
var e = window.event;
else
var e = evt; //if we got here, you're using Firefox
var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;
while (reltg.tagName != 'body')
{
//alert(reltg.id+" == " + x.id);
if (reltg.id == x.id)
{
return;
}
reltg = reltg.parentNode;
//alert(reltg.tagName);
}
// I'm on true mouseout, do stuff here:
$("#"+x.id+"ThickParent").stop(true, false);
$("#"+x.id+"ThickParent").width(0);
canStartAgain=true;
stopInterval = true;
timerValue = 1.50;
$("#"+x.id+"Timer").html("");
//thanks to: http://www.webmasterworld.com/javascript/3752159.htm
}
Раскомментируйте //alert(reltg.id+" == " + x.id);
, чтобы точно узнать, когда сработал onmouseout
и какой элемент reltg.parentNode
включен и в какое время.