最新のブラウザのほとんどは、新しいタブまたは新しいウィンドウでリンクを開くには、ctrl+click
またはcommand+click
または類似のコマンドをサポートしています。クリックされたリンクが新しいウィンドウまたはタブを開くためのものかどうかを判断してください
アプリケーションでは、クリックするとリンクが無効になります。ただし、ターゲットが同じウィンドウの場合(たとえば、新しいタブで開いた場合、リンクを再度クリックするのが妥当であるため、リンクが無効になることはありません)。
クリックして作成されたイベントオブジェクトを試してデバッグしましたが、ターゲットが新しいタブであるか新しいウィンドウであるかについての情報は見つかりませんでした。
既知の回避策:確かに、特定のリンクをクリックしている間に特定のキーが押されたかどうかを確認することは可能ですが、簡単なことですが、これらのコマンドはブラウザやOSによって異なります。複雑なマッピングや、ユーザーが設定したものなどを正確に特定することができます。
場所を新しいタブまたはウィンドウで開く必要があるかどうかを判断する信頼できる方法はありますか?このスクリプトは、リンクがtarget="_blank"
属性に基づいて、新しいタブ/ウィンドウで開くように起こっている場合にのみ、リンクをクリックできるようになりますhttp://jsfiddle.net/pioul/eCuNU/4/
:ここ
これは、固定ターゲット属性でのみ機能します。ユーザーがctrl(または同様のもの)を押し続けてこれを上書きすると、属性はもちろん変更されないため、決定は失敗します。 – Remo
あなたが話したケースにマッチするように自分の答えを編集しました。ユーザーが新しいウィンドウでリンクを開き、コード内でそれを検出しようとするあらゆる方法について考える以外の方法はありません。 – Pioul