Перехват клика по ссылке
День добрый. Задали мне такую задачку:
Есть сайт, написанный на asp.net. Посетители сайта кликают на ссылки двух типов: 1. <a href="~/About.aspx"... ></a> 2. <span onclick="Index.ShowPopup();"... ></span> Задача - для одной конкретной страницы перехватывать клики по ссылкам, подымать окошко "вы уверены? да/нет", если да, то выполнить действие (переход на страницу либо вызов функции), если нет то ничего не делать. Сначала я попробовал перехватывать клик так:
window.captureEvents(Event.CLICK);
window.onclick= handle;
function handle(e) {
alert("Объект window перехватывает это событие!");
window.routeEvent(e);
return true;
}
Но в ИЕ такой подход не работает, а в мозилле и хроме сначала вызывается onclick, и после него handle. Тогда я попробовал элементу <body> добавить onclick, но все равно onclick спана срабатывает перед onclick боди. И вот вопрос, как тогда перехватывать клики? |
тут все просто, но переход по спану ... это же не ссылка, ёмаё!
Пример: живой пример
<!DOCTYPE HTML>
<html>
<head><title>.</title><style>.a {color:blue;text-decoration: underline} a, span {margin:10px} </style></head>
<body>
<a href="http://javascript.ru">Это ссыль внутри боди</a>
<span onclick="location.href='http://google.ru'" class="a">спан внутри боди</span>
<div>
Это дивчик
<a href="http://ya.ru">Это ссыль внутри дивчика</a>
<span>
А это спан внутри
<a href="http://google.ru">Это ссыль внутри спана</a>
<span onclick="location.href='http://google.ru'" class="a">спан глубоко внутри....</span>
</span>
<span onclick="location.href='http://google.ru'" class="a">спан внутри дива</span>
</div>
<script>
document.body.onclick = function(e){
if(!e){ e=event;e.target = e.srcElement }
var tagname = e.target.nodeName.toLowerCase();
if( tagname === "a" || tagname === "span") {
alert( "Делаем чёрные дела. \n\nИмя тега : "+tagname );
return false;
}
}
</script>
</body>
</html>
|
Таки работает, но! Я не зря написал
<span onclick="Index.ShowPopup();"... ></span> То есть не переход <span onclick="location.href='http://google.ru'" а именно вызов функции. И при клике на такой спан сначала вызывается его функция, я уже потом document.body.onclick А просто со ссылками да, все пучком :) |
<span onclick="Index.ShowPopup();"... ></span> в функции Index.ShowPopup(); предусматривай отмену события, например
Index.ShowPopup({cancelable:true});
|
| Часовой пояс GMT +3, время: 07:36. |