Что я пытаюсь сделать, так это записать всю активность пользователя на заданную веб-страницу, поэтому я использую socket.io
для отправки событий, зарегистрированных на странице, на сервер с чем-то вроде этого :Inject custom function to onclick event
$(document).on('click.mynamespace', function(event){
var elem = event.target;
socket.emit('my-message', { 'element' : elem };
}
проблема я столкнулся, когда целевой элемент является звеном такого рода <a href="#" onclick="someFunctionThatRedirects()">My link</a>
. Независимо от того, какая функция вызывается, а страница выгружает (отключая мой сокет) до того, как оператор socket.emit
будет выполнен правильно.
Я хочу сделать это как можно более универсальным, так как он будет работать как плагин и хотел бы, чтобы он приспособился к любой среде, в которой я не буду контролировать.
Итак, есть ли способ «взломать» все события щелчка, сначала отправить их с моей пользовательской функцией, а затем продолжить «нормальное» выполнение, каким бы оно ни было?
EDIT
кажется только FF (проверено на 14.0.1
) вызывает socket.emit
событие не до конца. Chrome 21.0.x
, похоже, работает, но не уверен, что это «шанс».
EDIT 2
Функция someFunctionThatRedirects
фактически перенаправляет таким образом window.location.ref = clickedurl
В качестве побочного примечания обертывание и прямая разворачивание являются излишними. 'event.target' - это то, что вам нужно для' elem'. – pimvdb
Вы можете отложить перенаправление после события click –
О, да, извините, не знаю, почему я написал материал [0]. @pimvdb – scanales