用javascript(或jquery)捕获超链接点击

catch hyper link clicking with javascript(or jquery)?

本文关键字:超链接 javascript jquery      更新时间:2023-09-26

当用户单击收件箱中的链接时,我希望将与该链接相关的消息标记为seen

SO也具有此功能,
如果有人回复我的帖子,SO表示我的帖子发生了什么
在我点击收件箱消息并访问帖子后,SO不再显示通知标记。

我想测试一个问题的访问用户每次访问任何问题页面时是否都有收件箱消息太贵了
我想知道是否可以在收件箱页面中捕获clicking-link,这样我就可以在后台发送ajax请求来标记消息as seen

希望我的问题很清楚。

为单击的每条消息添加一个自定义数据属性。我不确定你是如何显示消息的,但对于这个例子,我们将使用一个span:

<span class="message">Some Message</span>

以及JS:

$(".message").click(function() {
    $(this).data("visited", true);
});

然后,您可以检查跨度,看看它们是否被访问过。如果您仍然想进行AJAX调用,您也可以简单地在单击处理程序中添加一个AJAX事件。

我假设您的消息表上有某种"状态"字段来区分"已读"answers"未读"。

如果您正在询问如何在不在每次页面加载时运行查询的情况下有效地存储收件箱中的未读邮件数量,可以通过设置$_SESSION变量来轻松完成:

$_SESSION['unread_messages'] = 2;

设置此变量后,您可以定期检查(每5分钟左右),以在合理的窗口内保持最新。单击并阅读邮件时,您将从该值中减去1或重新查询未读邮件的数量。

如果您询问如何更新数据库和UI,有两种主要方法可以实现。这将取决于用户单击消息时脚本中当前发生的情况。你是发出AJAX请求来加载消息,还是链接会将用户带到另一个页面?

如果您在单击消息时发出AJAX请求,只需让AJAX请求中调用的脚本也将消息标记为已读(在数据库中),并使用JavaScript对当前页面进行任何UI更新(例如删除单击消息上的粗体文本)。

如果单击邮件会重定向到显示整个邮件的其他页面,则可以在加载该页面时在数据库中将该邮件标记为已读。