私はこれが完了して整理された取引であることを知っていますが、これが私のアプリの問題を解決するために使用しているものです。
if (!e.target.hasAttribute("target")) {
e.preventDefault();
e.target.setAttribute("target", "_blank");
e.target.click();
return;
}
基本的にここで起こっているのは、リンクにtarget=_blank属性があるかどうかのチェックを実行することです。そうでない場合は、リンクのトリガーを停止し、新しいウィンドウで開くように設定してから、プログラムでリンクをクリックします。
次のようにすれば、さらに一歩進んで、元のクリックの停止をスキップして(コードをよりコンパクトにできます)できます。
if (!e.target.hasAttribute("target")) {
e.target.setAttribute("target", "_blank");
}
jQueryを使用して、属性のクロスブラウザーを追加する実装を抽象化する場合は、次の代わりにこれを使用する必要がありますe.target.setAttribute("target", "_blank")。
jQuery(event.target).attr("target", "_blank")
あなたはあなたの正確なユースケースに合うようにそれを作り直す必要があるかもしれませんが、これは私が自分のかゆみを掻く方法です。
ここにあります は、それを操作するためのデモをご紹介します。
(jsfiddleのリンクはこのディスカッションに戻ります。新しいタブは必要ありません:))
target="_top"新しいウィンドウで開きません-開きますtarget="_blank"。