Ctrlキーを押しながらクリックすると、新しいタブで一部のリンクが開かないのはなぜですか?


17

閲覧中に、Ctrlキーを押しながらリンクをクリックして、新しいタブで開くことがあります。ただし、新しいタブで開くのではなく、Ctrlキーを押さずに通常のタブをクリックしたかのように、現在のタブでクリックして参照します。ctrlを完全に押し下げており、キーボードやマウスに問題がないことを確信しています。

ときどき、新しいタブがリンクとともに開かれますが、現在のタブも同時にリンクを参照します。


3
おそらく、「リンク」がonclickctrl + clickを台無しにする可能性のある操作を使用しているという意味で、実際のリンクではありません。具体例を挙げていただけますか?meta.stackoverflow.com/questions/276138/...
imtheman

@imtheman素晴らしい点ですが、少なくとも私が見た例ではそうではないようです。これは、事前にマウスをリンクの上に置いて、ステータスバーにURLが表示されていることを確認するためです。例はここにある:nationaljournal.com/white-house/... 左側の列/バーで、他の記事へのリンクも、ソースにその場所にジャンプすることによって確認自分自身のURL、しかし、CTRL-クリックdoesnのように見えます動作せず、ctrlが保持されていないかのように動作します。
Coldblackice 14

:あなたがそのサイトのソースコードを見れば、あなたはリンクのいずれかのためにこれを参照してくださいよ<a class="primary" href="/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

1
それは持っていますがhref、属性を、それがonclickイベントによって上書きされます。
imtheman

1
この問題を修正するためにFirefoxアドオンを作成しました。github.com/danielnixon/link-fixer
ダニエルニクソン

回答:


7

舞台裏のJavaScript

これは、このようなWebページの開発者がJavaScriptを使用してマウスクリックをインターセプトし、インターセプター内で非同期ネットワーク要求を実行して、クリックを追跡する場合に発生します。非同期ネットワーク呼び出しが戻ると、JSは次のようなものを使用してプログラムによるリダイレクトを行います。window.location.href = url;

このプログラムによるリダイレクトでは、CtrlCmdMacの場合)を押した場合でも、常に同じタブにページが読み込まれます。

MiddleMouseを使用してオーバーライドする

マウスの中央ボタンをクリックするか、コンテキストメニューから[新しいタブで開く]を選択すると、インターセプトするJavaScriptコードが完全にバイパスされ、JavaScriptコードがまったくないかのようにリンクが開きます。


これは完全に正しいわけではありません。一部のコード設計では、ページを新しいタブで強制的に開く代替トリガーを使用できますが、他のコード設計ではこれを防ぎます。これは、一般的な「ページ」を持たず、ボタンがクリックされるとページを生成する動的コンテンツを持つサイトでより一般的です。この場合、ページには真の「リンク」ではなく、アプリケーションのような動作をトリガーするボタンがあります。
music2myear

5

これを修正するために、link- fixerという名前のFirefoxアドオン(退屈)を作成しました。addons.mozilla.orgからインストールできます。Firefox 48.0以降が必要です。

自分を引用する:

リンクをクリックするときのctrl + click、shift + click、およびcmd + clickのデフォルトの動作は、リンクを新しいタブまたは新しいウィンドウで開くことです。この振る舞いは不注意な開発者によって破られることがあります。このアドオンはデフォルトの動作を復元し、modiferキーが常に尊重されるようにします。

インストールしたら、他に何もする必要はありません。Ctrlキーを押しながら任意のリンクをクリックすると、新しいタブで開きます。また、2番目の段落で説明する問題のバリエーションも解決します。


1
こんにちはダニエル、これに対処するための何かを書いたのは素晴らしいことですが、回答、特に太字の部分でソフトウェアを推奨する方法を読んで、回答を更新してください。ありがとう:)
bertieb

3

このリンクを例として見てみましょう。

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

href属性は、このケースでは、読みやすくするための疑似リンク(それはまた、JavaScriptが無効になっている場合は、リンクでも動作するようになります)を作成しています。これは、onclick属性が常に最初に実行されるためです。Googleのような大規模なサイトは、クリックを追跡し、ユーザーがマルウェアサイトにアクセスできないようにするためにこれを行います。このため、何らかの理由でCtrl+クリックが機能しません。ただし、マウスの中央ボタンを使用すると、ほとんど常に機能します。


Macでミドルマウスを見つけようとしています
エデュアルド

この問題を修正するためにFirefoxアドオンを作成しました。github.com/danielnixon/link-fixer
ダニエルニクソン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.