質問: 可能かどうかのご質問になります。 javascriptの範囲外だったらすみません。 ひとつのブラウザで2つのページを開いてるとします。(これ以外にも色々開いている可能性がありますが、今回は説明の為二つだけ。) 「A.html」「B.html」 A.htmlが通常のページ。 B.htmlはお申込みフォームのようなページ。 B.htmlのページは複数タブ開かせたくありません。 たとえばB.htmlがすでに開いている状態で、 A.htmlからのリンクで、さらにB2.html(仮にB2と仮定します)を別タブで開こうとしたとき、 B2.htmlは開かせず、すでにあるB.htmlにタブを切り替える。 といったことは可能でしょうか?
回答: 最近のブラウザはセキュリティの関係でwindow間のfocus遷移を 極端に抑制しているものもあるので、意外に面倒な内容です。 ページの遷移にpostなど利用していないなら 以下のようにアンカーに同じtargetを指定してやり 一度クローズして再読込するのが精度が高い処理になります。 ``` window.addEventListener('DOMContentLoaded', function(e){ var nWin; document.addEventListener('click',function(e){ var t=e.target; var target=t.getAttribute("target"); var href=t.getAttribute("href"); if(t.nodeName=="A" && target!==""){ e.preventDefault(); if(typeof nWin=="undefined" || nWin.closed){ console.log("not open"); }else{ console.log("opened"); href=nWin.location.href; nWin.close(); } nWin=window.open(href,target); } }); }); ``` ``` 1 2 ```