在 Firefox 下按住 Ctrl 键点开超链接,为何有些网页会强行跳转到新的标签页?

在火狐下,按住 Ctrl 键点开超链接,按照规范应该是用新的标签页打开链接。但只是在后台打开,并不会自动切换过去。然而有些网页似乎用了一些特别的机制,强行切换焦点,让新链接网页变成前台网页。典型的比如:

中的部分链接,按住 Ctrl 键点开后会强行跳转到 “CSDN 安全中心,请注意您的账号和财产安全”。然后这几天我发现知乎上的一些网页也变成这样,比如用这个:

来测试,这是一个典型的知乎 topic 网页,按住 Ctrl 键点开其中的 问题/回答 (question/answer), 会发现会强行跳转到新的标签页。

能否设置火狐,在按住 Ctrl 键的时候,新标签页不强行夺走焦点,只在后台打开?

你有勾选那个 When you open a link, image or media in a new tab, switch to it immediately 吗?

没有的。

现在的症状是:大多数超链接都在后台打开,只有部分网站用了一些特别的技巧,导致强行夺走焦点。

大概率脚本捕获了链接上的事件并阻止了浏览器的默认行为,是脚本触发的新窗口,不是你所谓的夺走焦点。这很常见,超链接标签默认可以被打开,但是现在大部分都不直接使用,因为点击之后有很多前置逻辑,所以一般都是自己定义打开行为。有办法但是火狐上面的设置肯定是不行。。。

1赞

我的 JavaScript 知识非常有限,不过简单跟踪网页发现确实如你所说的。那些链接都不是直接的 HTML 标签,而是用 JavaScript 打开新窗口。

火狐似乎不能完全拦截这种开新窗口的事件,只能确保在新标签页而非新窗口打开,却不能限制它,让它只能在后台打开。

CSDN 未复现,知乎复现。

猜测原因是知乎脚本 JS 自行处理了链接点击事件,使用 JS 在新标签页中打开了链接。一种绕过的办法是使用中键点击,这时候似乎不会触发知乎自己的处理。

我也挺讨厌这种劫持超链接点击的行为。另一个我十分讨厌的行为是,点一下多一个 tab。还有一种是超链接上并没有真正的地址,使用 JS 跳转,拿中键点不开。我希望能自行控制超链接如何打开,讨厌网页教我如何浏览。

1赞

CSDN 博客里的部分链接已经被认定成 “可靠” 网址,不会强行跳转。但对于尚未被 CSDN 加入白名单的网址,就会强行跳转到 “csdn - 安全中心”,并且提示 “请注意您的账号和财产安全。您即将离开 CSDN,去往……”

可以用这个网页来测试:

在它开头的 “LLVM 和 Clang 的背景” 下的 “它最初的编写者,是一位叫做 Chris Lattner” 后面就有一个 “个人主页” 是超链接,点开就会强行跳转。

这种事情按理来说,火狐可以处理好的。毕竟无论是开新窗口还是新标签页,网页本身作为运行在浏览器这个 “容器” 里面的东西,完全受到浏览器的约束。只要火狐检测到用户按下了 Ctrl 键,就禁止新标签页切换到前台即可。

顺带再问一个问题,上次说到 “ Firefox 显示不了「知乎」网页的中文粗体” 的事情。当时您给出的:

.ztext b {
font-synthesis: weight style ! important;
}

解决了这个问题。花括号里头的东西我懂,只是不清楚外面的 “.ztext b” 是专门针对知乎上的网页,还是通用的?

我希望通用,因为可能其他网页也有显示不了粗体的现象,只是尚未发觉。假如只是专门针对知乎,并不通用,那么该如何修改成通用的?

嗯,已复现。

你去给火狐提 bug 报告呀。

是针对知乎的。你改成 * 大概就「通用」了,如果别的网页也用了同样的样式而导致了这一问题的话。

哪个地方改成 * ?

是 .ztext 吗?后面的 b 应该是粗体的意思吧?

花括号外的改。

* {
  font-synthesis: weight style ! important;
}

这样子。

1赞

好的,知道了。谢谢 :smiley:

之前我也遇到过 bing 国际版的所有搜索结果都有这样的行为。不过后来 bing 就改回来了。当时还每太注意。