如何使用jquery在新选项卡或窗口中捕获打开的链接?

时间:2011-10-21 04:12:04

标签: javascript javascript-events jquery

是否可以使用jQuery捕获新窗口/标签中的右键单击打开或在新窗口/选项卡事件中打开鼠标滚轮?
更新1
这就是我需要它的原因。我有使用分页类的codeigniter应用程序。我用这个类来显示一个网格。分页链接已与使用AJAX加载容器div中的下一页的方法绑定。现在有人可以右键单击并在新标签/窗口中打开我不想要的下一页。恕我直言,解决这个问题的唯一方法是在新窗口/标签事件中打开(右键单击或鼠标滚轮按钮单击)陷阱。
更新2
我刚刚意识到我的所有AJAX请求都由一个CI控制器提供服务,它实际上充当其他类/库的代理。在这个控制器中,我可以查看请求,如果它不是AJAX请求,我可以将用户重定向到另一个页面。

4 个答案:

答案 0 :(得分:1)

解决方法是使用按钮替换所有适用的<a>元素,其中(显然)按钮会调用执行相应导航的JavaScript。

如果你非常热衷于可以使用CSS来使按钮看起来像<a>个元素,虽然我不推荐它,因为它会混淆那些可能会试图将它们视为标准链接的用户和中键点击它们。

(您甚至可以让没有启用JavaScript的用户使用它,例如,将每个按钮设置为自己的小形式的提交按钮。)

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我现在几乎为我正在处理的页面修复了类似的问题。我的修复是在页面中进行一些更改,如果已在新窗口中打开....

假设您在新窗口中从页面“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");
}

答案 3 :(得分:0)

如果您不希望人们以常规方式访问链接或在禁用JS时回退,那么它不应该是链接。只需使用您喜欢的任何元素(span,div,button,无论您喜欢什么),并将其设置为链接样式。然后使用JS绑定动作。或者,您可以使用href="#"href="javascript: void(0)"的链接。这样,如果用户右键单击它并选择在新窗口中打开,那么它们将最终出现在之前的同一页面中。