Поймать все события браузера, которые могут перенаправить / открыть новый браузер - PullRequest
2 голосов
/ 15 июля 2009

Мне нужен JavaScript на странице, который может перехватывать событие всякий раз, когда я нажимаю на что-то, и этот щелчок может привести к перенаправлению, открытию в новом окне и т. Д.

Поскольку ссылки иногда не открываются напрямую в новом окне, они вызывают функцию javascript (window.open, document.location.href). Возможно ли, что я могу поймать их и отредактировать URL.

Спасибо.

Ответы [ 2 ]

1 голос
/ 22 июля 2009

Вы можете назначить обработчик onclick для document.body и определить, какой элемент был нажат, используя event.target , это в основном делает делегирование события.

Имея цель события, вы можете знать все о выбранном элементе, например его tagName и все атрибуты элемента:

document.body.onclick = function(event){
  if (event.target.tagName == 'A'){ //Handle anchors
    var url = event.target.href;
    // redirect, window.open, or whatever you want...

    event.preventDefault();
  }
}
0 голосов
/ 15 июля 2009

Этого можно добиться, используя событие ссылок click. Если бы вы использовали jQuery, он мог бы выглядеть примерно так:

$("a").click(function() {
    /* Open the site in a new window */
    var strNewURL = "http://example.com/redirect.php?id=" + this.href;
    window.open(strNewURL, "myFancyNewWindow");

    /* Stop the browser following the original link */
    return false;
});

Здесь показано, как можно добавить дополнительный бит в начало href, чтобы отправить туда пользователя с помощью собственного сценария перенаправления.

Если вы хотите сделать это только для определенных ссылок, вы можете уточнить селектор, например, $("#content a").

См. Также: https://developer.mozilla.org/En/DOM/Window.open и http://docs.jquery.com/Events/click.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...