【问题标题】:Is there a jQuery event that can trigger *after* an anchor click completes?是否有一个 jQuery 事件可以触发 *after* 锚点单击完成?
【发布时间】:2012-04-12 17:06:38
【问题描述】:

这是给你的!

是否有某种 jQuery 事件会在 锚点单击事件完成之后触发,而不是在之前触发?

我希望用户单击<a href="/someurl" target="_blank">link</a>,然后相应地打开新标签,然后在当前页面(不是新标签)上,在新标签打开后,重定向到另一个页面。所以我一直在寻找一个可以做到这一点的活动。

然而,就目前而言,事件似乎发生在锚标签点击完成其业务之前,但是在那个阶段重定向会中断锚点击。

注意:我在新页面的锚点单击浏览器操作中使用“_blank”的原因是,浏览器弹出窗口阻止程序不会像您通过 javascript 调用此类操作时那样妨碍它们。

【问题讨论】:

  • 弹出窗口拦截器的存在是有原因的。例如,尝试使用 jQuery UI 对话框重新设计您的解决方案。
  • @JakubKonecki 弹出窗口阻止程序不会阻止如果用户单击具有 target="_blank" 的链接,我的说明是为了澄清我为什么使用这种方法。

标签: jquery events


【解决方案1】:

当您让click 事件调用一个方法,该方法又调用带有委托的setTimeout 方法来更改document.location 时会发生什么?

【讨论】:

  • 这可能是答案,但我希望有一个我可以使用的事件,这样我就不必依赖基于时间的解决方案。
  • @Alexander - 任何绕过弹出窗口阻止程序行为的答案都将成为一种解决方法。
  • @SpencerRuport 我没有绕过弹出窗口阻止程序...我试图在完成标准浏览器可接受的锚标记 target="_blank" 点击之前重定向页面,而不会丢失该事件重定向后...我写这个问题一定做得不好,因为每个人都在说这个。
  • Ryan - 我理解你想要做什么,但事实是“真正的”方法是让 javascript 打开一个新窗口并更改当前页面的位置。弹出窗口阻止程序不允许这样做,至少在我看来,您使用的任何解决此问题的方法都会绕过弹出窗口阻止程序。也就是说,我不认为你想要完成的事情违背了弹出窗口阻止的精神,这就是我愿意提供建议的原因。希望这是有道理的。
【解决方案2】:

只需添加一个click 处理程序和return true;。这不会阻止浏览器处理实际点击。

【讨论】:

  • 对,但是如果我在'return true'之前重定向当前页面,它不会阻止return true的发生吗?
  • 嗯,可能是的...... - 超时解决方法可能是你唯一的希望;-)
猜你喜欢
  • 2011-05-05
  • 2016-02-18
  • 2016-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多