为什么按住CTRL键单击不打开新选项卡中的某些链接?


18

有时在浏览时,我会按住ctrl键单击链接以在新标签页中将其打开。但是,与其在新选项卡中打开,不如在没有按住ctrl的情况下正常单击它,而是在当前选项卡中单击并浏览到该选项卡。我很肯定我完全按下了ctrl,并且键盘或鼠标都没有问题。

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


3
也许它们不是实际的链接,从某种意义上说,“链接”正在使用onclick可能会干扰ctrl + click的操作。你能举一个具体的例子吗?meta.stackoverflow.com/questions/276138/...
imtheman

@imtheman太棒了,但是,至少在我所看到的示例中,情况似乎并非如此。我知道这一点是因为我总是将鼠标悬停在链接上,以验证其是否在状态栏中显示了URL。此处是一个示例:nationaljournal.com/white-house/… 在左侧列/栏中,指向其他故事的链接似乎是它们自己的URL,甚至通过跳转到其在源中的位置进行验证,但是,按住ctrl单击不会没有用,而是好像没有按住ctrl。
Coldblackice 2014年

如果您查看该站点的源代码,则会在以下链接之一中看到它:<a class="primary" href="/superuser//congress" onclick="var x=&quot;.tl(&quot;;s_objectID=&quot;http://www.nationaljournal.com/congress_1&quot;;return this.s_oc?this.s_oc(e):true">Congress</a>
imtheman 2014年

1
虽然它确实具有href属性,但是它会被onclick事件覆盖。
imtheman 2014年

1
我写了一个Firefox插件来解决这个问题。github.com/danielnixon/link-fixer
danielnixon

Answers:


8

幕后的JavaScript

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

即使您按住CtrlCmd在Mac上,该程序重定向也将始终在同一标签中加载页面。

使用MiddleMouse覆盖

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


这不是完全正确的。尽管某些代码设计确实允许强制页面在新选项卡中打开的备用触发器,但其他代码设计却阻止了这种情况。这在具有动态内容的站点中更为常见,该站点没有典型的“页面”,而是在单击按钮时生成页面。在这种情况下,页面中没有真正的“链接”,而是触发行为的按钮更像是应用程序。
音乐2

6

我写了一个名为link- fixer的Firefox附加组件(很无聊)来解决此问题。您可以从addons.mozilla.org安装。它需要Firefox 48.0或更高版本。

自我报价:

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

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


1
嗨,丹尼尔(Daniel),虽然您写了些什么可以解决这个问题,但是您能阅读如何推荐答案中的软件,尤其是粗体部分,并更新您的答案吗?谢谢:)
bertieb '18

3

让我们以该链接为例:

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

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


1
尝试在Mac上找到中键鼠标
爱德华

我写了一个Firefox插件来解决这个问题。github.com/danielnixon/link-fixer
danielnixon
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.