我想要做的是记录给定网页上的所有用户活动,所以我使用socket.io
发送在页面上注册的事件到服务器这样的事情:注入自定义函数onclick事件
$(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
语句正确执行之前,无论调用哪种函数并卸载页面(断开我的套接字)。
我想尽可能通用,因为这将作为一个插件,并希望它适应任何类型的环境,我将无法控制。
那么,有没有办法“强行”所有点击事件,首先用我的自定义函数发送它们,然后继续“正常”执行,无论它是什么?
编辑
看来只有FF(上14.0.1
测试)导致socket.emit
事件没有结束。 Chrome 21.0.x
似乎正在工作,但不知道这是否是“偶然”。
EDIT 2
功能someFunctionThatRedirects
实际上以这种方式重定向window.location.ref = clickedurl
作为一个侧面说明,包装和直接解包是多余的。 'event.target'就是'elem'之后的东西。 – pimvdb
你可以推迟重定向到点击事件后 –
哦,是的,抱歉,不知道为什么我写了[0]的东西。 @pimvdb – scanales