【问题标题】:Link remains :hover'ed when opened from JS从 JS 打开时,链接仍然:悬停
【发布时间】:2015-06-10 20:59:55
【问题描述】:

这对于深入了解前端的人来说可能有点有趣。

这个说不通,自己试试吧:

  1. 使用href + target="_blank" 打开链接
  2. 关闭打开的标签页,回到原来的状态
  3. 链接状态现在是:focus

没关系。但这有什么问题呢?

  1. 在点击事件中打开带有window.open() 的链接
  2. 关闭打开的标签页,回到原来的状态
  3. 链接状态现在是:hover,尽管它并没有真正悬停。除非您开始移动光标,否则您将无能为力。 trigger('mouseout') 无济于事,也无济于事。

这是JSFiddle - 我为每个事件添加了console.log() 输出,并为状态设置了不同的颜色,以便您看得更清楚。

【问题讨论】:

  • 我刚刚尝试了您创建的 JSFiddle,它工作正常。你用的是什么浏览器?
  • JSFiddle 在 Firefox(技术上是 Iceweasel)中对我来说很好用。
  • 已在最新版本的 Chrome 和 Safari 中试用。当您返回原始选项卡(并且尚未移动光标)时,链接不是红色吗?
  • 正如我在其他评论中所说,您可以添加一个类,当您单击它时使 :hover 无效,并在 mousein 事件时将其删除。
  • 好吧,我认为这是浏览器开发人员的错。

标签: javascript jquery html css frontend


【解决方案1】:

浏览器保持:hoverstatus 直到鼠标经过其他东西,如果当您打开新窗口/标签时鼠标保持在同一位置,它将保持:hover。当您将焦点返回到页面时,:hover 将在您将鼠标移到其他内容时移除。这种行为在某些计算机中可能存在问题(不一定是浏览器故障),并且会一直存在,直到您单击其他地方为止。

【讨论】:

  • 好吧,就这样吧。但是为什么trigger('mouseout') 没有帮助呢?在其他所有情况下都是如此。
  • mouseout 是一个 javascript 事件,它不负责 CSS 悬停样式。毕竟,如果 JavaScript 被禁用, :hover 就可以工作。就 CSS 引擎而言,光标仍在链接上。
  • 您可以添加一个在您单击时使:hover 无效的类,并在mousein 事件中将其删除。
  • @JacqueGoupil 但是为什么当您从href 打开链接时,CSS 引擎认为链接没有悬停?两种情况下光标都不会移动。
猜你喜欢
  • 2015-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-22
  • 2011-01-03
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多