幕后的 JavaScript

幕后的 JavaScript

有时在浏览时,我会按住 Ctrl 键并单击链接以在新选项卡中打开它。但是,它不是在新选项卡中打开,而是被单击并在当前选项卡中浏览,就像我正常单击它而没有按住 Ctrl 键一样。我确信我完全按住了 Ctrl 键,并且键盘或鼠标没有故障。

有时,会打开一个带有链接的新选项卡,但当前选项卡也会同时浏览到该链接。

答案1

幕后的 JavaScript

当此类网页的开发人员使用 JavaScript 拦截鼠标点击并在拦截器内部执行异步网络请求时,可能会发生这种情况,从而可能跟踪您的点击。当异步网络调用返回时,JS 使用类似以下方式进行编程重定向:window.location.href = url;

即使您按住CtrlCmd在 Mac 上),此程序重定向也会始终在同一个选项卡中加载页面。

使用 MiddleMouse 覆盖

单击鼠标中键或选择‘在新标签页中打开’从上下文菜单中将完全绕过拦截 JavaScript 代码并打开链接,就好像根本没有 JavaScript 代码一样。

答案2

我编写了一个 Firefox 插件,名字很无聊链接修复器来修复此问题。您可以从 addons.mozilla.org 安装. 需要 Firefox 48.0 或更高版本。

引用我自己的话:

单击链接时,ctrl+click、shift+click 和 cmd+click 的默认行为是在新选项卡或新窗口中打开链接。粗心的开发人员有时会破坏此行为。此附加组件可恢复默认行为,确保修饰键始终受尊重。

安装后您无需执行任何其他操作。您可以按住 Ctrl 键并单击任何链接,它将在新选项卡中打开。它还将解决您在第二段中描述的问题的变体。

答案3

让我们以此链接为例:

<a href="test.php" onclick="someFunction(this); return false;">Test</a>

在这种情况下,该href属性会创建一个伪链接以提高可读性(即使禁用 JavaScript,它也会允许链接正常工作)。这样做的原因是该onclick属性始终先运行。像 Google 这样的大型网站这样做是为了跟踪点击次数并试图阻止用户访问恶意软件网站。因此,出于某种原因,Ctrl+ Click 不起作用。但是,如果您使用鼠标中键,这几乎总是有效的。

相关内容