点击链接时捕获事件

发布于 2024-12-28 00:08:47 字数 291 浏览 1 评论 0原文

我正在尝试跟踪外部链接的点击(不使用“重定向页面”)。

如何在用户点击链接时捕获事件,无论用户是否:

  1. 左键单击链接
  2. 右键单击​​链接并在新窗口中打开它
  3. 使用键盘激活链接
  4. 是否还有其他方法来激活链接关联?

onClick 事件仅适用于第一个。

如果设置 href="javascript:fireEventAndFollowLink()" 用户将无法在新窗口中打开链接 (2),因此这不是解决方案。

I am trying to track clicks on an external link (without using a "redirect page").

How can I capture an event when a user follows a link, regardless of whether the user:

  1. Left clicks on the link
  2. Right clicks on the link and open it in a new window
  3. Use the keyboard to activate the link
  4. Is there other ways to activate a link?

The onClick event only applies to the first.

If setting href="javascript:fireEventAndFollowLink()" the user will not be able to open the link in a new window (2), so this is not a solution.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

[浮城] 2025-01-04 00:08:47

可以通过某些方式触发链接(假设使用现代浏览器,请参阅脚注):

  1. 左键单击
  2. 中键点击
    • 无论使用哪个修饰键,页面都会加载到新选项卡中。
  3. 右键单击
    这种方法即使不是不可能完全实现,也是极其困难的
    JavaScript 无法用于直接检测上下文菜单中选择了哪个选项。

    • 选择“在新选项卡、窗口中打开链接”时,页面将在新选项卡、窗口中加载。
    • 如果不选择其中任何一个,则不会加载任何内容
  4. 键盘不会加载任何内容:
    • 上下文菜单(参见 3。)
    • 输入 - 请参阅 1。

如何捕获这些链接
没有可靠的方法来捕获所有链接事件。

  • onmouseup 事件可用于检测 1、2 和 3。
    可以通过 event.button (或 < code>event.which) 属性。在所有非 IE 浏览器中,0=左,1=中,2=右。在 IE 中,1=左,2=中,4=右。
  • onclick 事件可用于捕获 1 和 2。
    可以通过 event.altKeyevent.shiftKey 属性检测修饰键。
  • oncontextmenu 事件可用于捕获 3
  • onkeydown 事件可用于捕获 4。

修饰键的行为在任何规范中都没有正式化,并且因此是特定于浏览器的。至少 Firefox(至少 3+)和 Chrome(全部?)实现了这一关键行为。

相关问题 - 如何拦截链接上的操作 ()?

A link can be triggered in some ways (assuming modern browsers, see foot note):

  1. Left click
    • For <a target="_blank"> or <a target="_new">, the page will be loaded in a new tab.
    • When the user presses CTRL, the page will be loaded in a new tab.
    • When the user presses SHIFT, the page will be loaded in a new window.
    • For other target values, the link can be loaded in the current screen or another frame.
  2. Midde click
    • The page will be loaded in a new tab, regardless of the modifier keys.
  3. Right click
    This method is incredibly hard, if not impossible to fully implement.
    JavaScript cannot be used to directly detect which option in the contextmenu has selected.

    • When selecting "Open link in new (tab, window)", the page will load in a new tab, window.
    • When not selecting any of these, nothing loads
  4. Keyboard:
    • Contextmenu (see 3.)
    • Enter - See 1.

How to capture these links
There is no reliable way to capture all link events.

  • The onmouseup event can be used to detect 1, 2, and 3.
    The used button can be tracked through the event.button (or event.which) property. In all non-IE browsers, 0=Left, 1=Middle, 2=Right. In IE, 1=Left, 2=Middle, 4=Right.
  • The onclick event can be used to capture 1 and 2.
    The modifier key can be detected through the event.altKey and event.shiftKey properties.
  • The oncontextmenu event can be used to capture 3
  • The onkeydown event can be used to capture 4.

The behaviour of the modifier keys is not formalized in any specification, and is thus browser-specific. At least Firefox (at least 3+) and Chrome (all?) implement this key behaviour.

Related question - How to intercept an action on a link (<a>)?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文