是否可以使用jQuery捕获在新窗口/选项卡中右键单击打开或在新窗口/选项卡中鼠标滚轮打开事件?
更新1
这就是为什么我需要它。我有codeigniter应用程序使用分页类。我用这个类来显示一个网格。分页链接已经绑定了一个方法,使用 AJAX 来加载容器div中的下一页。现在有人可以右键单击并在新的标签/窗口中打开下一页,这是我不想要的。恕我直言,处理这个问题的唯一方法是捕获(右键单击或鼠标滚轮按钮单击)在新窗口/选项卡中打开事件。
更新2
我刚刚意识到我所有 AJAX 请求都是由一个CI控制器来服务的,它实际上是其他类/库的代理。在这个控制器中,我可以查看请求,如果它不是AJAX请求,我可以将用户重定向到另一个页面。
4条答案
按热度按时间dgjrabp21#
一个变通的解决方案是用按钮替换所有适用的
<a>
元素,其中(显然)按钮将调用执行适当导航的JavaScript。如果你真的很喜欢,你可以应用CSS使按钮看起来像
<a>
元素,尽管我不推荐这样做,因为它会让用户感到困惑,他们可能会试图把它们当作标准链接,然后右键或中键单击它们。(You我甚至可以让它为没有启用JavaScript的用户工作,例如,使每个按钮都成为一个提交按钮,并具有自己的小表单。)
qvtsj1bj2#
至少你可以用
.mousedown()
(或者,大概是mouseup()
)捕捉到一次右键点击。更多关于右键点击的信息,请参见this StackOverflow answer。通过捕捉它,你应该能够执行一个标准的event.preventDefault()
,然后从那里开始做你喜欢做的事情。然而,这可能有点矫枉过正,因为它可能会阻止用户做你想让他们做的其他事情。uyhoqukh3#
我几乎修正了一个类似的问题,现在我正在工作的网页。我的修复是做一些改变,在网页中,如果已经打开了一个新的窗口。
假设您在新窗口中从页面"A"打开页面"B"。
如果您要检查页面"B"是否从页面"A"在新窗口中打开,请按照以下步骤操作。
b4lqfgs44#
如果你不想让人们以通常的方式访问链接,或者在JS被禁用时后退,那么它不应该是一个链接。(span、div、button等),并将其样式设置为链接。然后使用JS绑定该操作。或者您可以使用带有
href="#"
或href="javascript: void(0)"
的链接。这样,如果用户右键单击它并选择在新窗口中打开,那么它们将在它们之前所在的相同页面中结束。