• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Противоречие Click и Mouseover

  • Автор темы Oflashp
  • Дата начала
Статус
Закрыто для дальнейших ответов.
O

Oflashp

Господа, возникла проблема:
Вот кусок кода, он рабочий сверху и снизу, поэтому выкладываю кусок(заместо трёх точек соотвественно н-ная функция:
Код:
...
obj_menu.addEventListener ('click', ... , true); // Opera, FF, NN
obj_menu.addEventListener ('mouseover', ... ,true); // Opera, FF, NN
obj_menu.addEventListener ('mouseout', ..., true); // Opera, FF, NN
...
Работает только mouseover и mouseout. На событие click реакции нет. Комментирую
Код:
...
obj_menu.addEventListener ('click', ... , true); // Opera, FF, NN
//obj_menu.addEventListener ('mouseover', ... ,true); // Opera, FF, NN
//obj_menu.addEventListener ('mouseout', ..., true); // Opera, FF, NN
...
запускаю - click пашет.
Пробовал переставлять местами(!да - тупость знаю, но когда нет решений приходится тыкать)
Собственно с логической точки зрения, я понимаю, что кликает юзер или нет, в любом случае будет выполняется mouseover. Получается перекрытие click.
Как сделать, так, чтобы при наводе мышки на обьект работала mouseover, при клике = click
Заранее благодарю за помощь, не первый час уже парюсь с проблемой.
P.S: К сожалению в JS лох, я больше PHP. Поэтому если можно пример.
 
S

sir Aurum

Все должно работать, наверное где-то внутри вызываемой функции ты переопределяешь прописанный onclick event

вот рабочий пример:
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>
<head>
<title>Test</title>
</head>

<body>
<span id="qqq">wwwwwwwwww</span>
<div id="watch"></div>
<script>
debug = function(str){
document.getElementById('watch').innerHTML = str;
}
var obj = document.getElementById('qqq');
obj.addEventListener ('click', function(){debug('click')}, true); // Opera, FF, NN
obj.addEventListener ('mouseover', function(){debug('mouseover')},true); // Opera, FF, NN
obj.addEventListener ('mouseout', function(){debug('mouseout')}, true); // Opera, FF, NN
</script>


</body>
</html>

если бы я внутри функции debug переопределил или удалил onclick для нашего спана, то он бы не отрабатывал. Так, наверное, происходит у тебя.

P.S. Вот тебе функция добавления событий для всех браузеров:
Код:
addEvent = function(obj, type, fn){
if(obj.addEventListener){
obj.addEventListener(type, fn, false);
return true;
}else if(obj.attachEvent){
var r =	obj.attachEvent( "on"+type, fn );
return r;
}
};

// пример использования
addEvent(obj, "mouseover", function(){this.style.color = "Red";});
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!