Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.07.2011, 16:15
Интересующийся
Отправить личное сообщение для Spinne Посмотреть профиль Найти все сообщения от Spinne
 
Регистрация: 21.10.2010
Сообщений: 11

Перехват клика по ссылке
День добрый. Задали мне такую задачку:

Есть сайт, написанный на 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 боди.
И вот вопрос, как тогда перехватывать клики?
Ответить с цитированием
  #2 (permalink)  
Старый 08.07.2011, 16:41
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

тут все просто, но переход по спану ... это же не ссылка, ёмаё!

Пример: живой пример
<!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>

Последний раз редактировалось melky, 08.07.2011 в 16:52.
Ответить с цитированием
  #3 (permalink)  
Старый 08.07.2011, 16:54
Интересующийся
Отправить личное сообщение для Spinne Посмотреть профиль Найти все сообщения от Spinne
 
Регистрация: 21.10.2010
Сообщений: 11

Таки работает, но! Я не зря написал
<span onclick="Index.ShowPopup();"... ></span>

То есть не переход
<span onclick="location.href='http://google.ru'"

а именно вызов функции. И при клике на такой спан сначала вызывается его функция, я уже потом document.body.onclick

А просто со ссылками да, все пучком
Ответить с цитированием
  #4 (permalink)  
Старый 08.07.2011, 17:00
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

<span onclick="Index.ShowPopup();"... ></span>


в функции

Index.ShowPopup();


предусматривай отмену события, например

Index.ShowPopup({cancelable:true});
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
onclick на ссылке (Sandr) Общие вопросы Javascript 9 23.09.2015 03:50
Получение координат клика мыши uonax Events/DOM/Window 3 20.06.2010 09:32
Имитация клика на ссылке ElDoRada Общие вопросы Javascript 19 09.06.2010 18:08
переход по ссылке только после нескольких кликов по ней smilexpo Events/DOM/Window 8 24.11.2009 16:57
Help ! Как загрузить данные по ссылке из таблицы1 в таблицу2 ? asked86 Общие вопросы Javascript 1 25.03.2009 21:06