如何使用jQuery捕获新标签页或窗口中打开的链接?

mbyulnm0  于 2022-11-29  发布在  jQuery
关注(0)|答案(4)|浏览(277)

是否可以使用jQuery捕获在新窗口/选项卡中右键单击打开或在新窗口/选项卡中鼠标滚轮打开事件?

更新1

这就是为什么我需要它。我有codeigniter应用程序使用分页类。我用这个类来显示一个网格。分页链接已经绑定了一个方法,使用 AJAX 来加载容器div中的下一页。现在有人可以右键单击并在新的标签/窗口中打开下一页,这是我不想要的。恕我直言,处理这个问题的唯一方法是捕获(右键单击或鼠标滚轮按钮单击)在新窗口/选项卡中打开事件。

更新2

我刚刚意识到我所有 AJAX 请求都是由一个CI控制器来服务的,它实际上是其他类/库的代理。在这个控制器中,我可以查看请求,如果它不是AJAX请求,我可以将用户重定向到另一个页面。

dgjrabp2

dgjrabp21#

一个变通的解决方案是用按钮替换所有适用的<a>元素,其中(显然)按钮将调用执行适当导航的JavaScript。
如果你真的很喜欢,你可以应用CSS使按钮看起来像<a>元素,尽管我不推荐这样做,因为它会让用户感到困惑,他们可能会试图把它们当作标准链接,然后右键或中键单击它们。
(You我甚至可以让它为没有启用JavaScript的用户工作,例如,使每个按钮都成为一个提交按钮,并具有自己的小表单。)

qvtsj1bj

qvtsj1bj2#

至少你可以用.mousedown()(或者,大概是mouseup())捕捉到一次右键点击。更多关于右键点击的信息,请参见this StackOverflow answer。通过捕捉它,你应该能够执行一个标准的event.preventDefault(),然后从那里开始做你喜欢做的事情。然而,这可能有点矫枉过正,因为它可能会阻止用户做你想让他们做的其他事情。

uyhoqukh

uyhoqukh3#

我几乎修正了一个类似的问题,现在我正在工作的网页。我的修复是做一些改变,在网页中,如果已经打开了一个新的窗口。
假设您在新窗口中从页面"A"打开页面"B"。
如果您要检查页面"B"是否从页面"A"在新窗口中打开,请按照以下步骤操作。

If (document.referrer == "A" && window.history.length > 1) {
     alert("I am page 'B' and opened from page 'A' in a new window");
}
b4lqfgs4

b4lqfgs44#

如果你不想让人们以通常的方式访问链接,或者在JS被禁用时后退,那么它不应该是一个链接。(span、div、button等),并将其样式设置为链接。然后使用JS绑定该操作。或者您可以使用带有href="#"href="javascript: void(0)"的链接。这样,如果用户右键单击它并选择在新窗口中打开,那么它们将在它们之前所在的相同页面中结束。

相关问题