gpt4 book ai didi

javascript - 将自定义函数注入(inject) onclick 事件

转载 作者:行者123 更新时间:2023-11-30 06:39:58 26 4
gpt4 key购买 nike

我想做的是记录给定网页上的所有用户事件,所以我使用 socket.io将页面上注册的事件发送到服务器,如下所示:

$(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似乎有效,但不确定这是否是“偶然”。

编辑 2

函数someFunctionThatRedirects实际上以这种方式重定向 window.location.ref = clickedurl

最佳答案

事件向上冒泡,所以被点击的元素会在你的socket.emit之前触发它的事件,你可以改变函数的工作方式,让它们按照你想要的顺序执行它们的 Action ,如下所示

function someFunctionThatRedirects(){
window.redirectTo = 'myNewPage';
}
$(document).on('click.mynamespace', function(event){
var elem = $(event.target)[0];
socket.emit('my-message', { 'element' : elem };
if(window.redirectTo !== undefined) window.location.href = window.redirectTo;
}

关于javascript - 将自定义函数注入(inject) onclick 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12168101/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com