質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

4回答

3795閲覧

javascriptでブラウザのタブ操作

退会済みユーザー

退会済みユーザー

総合スコア0

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2018/05/28 00:33

可能かどうかのご質問になります。

javascriptの範囲外だったらすみません。

ひとつのブラウザで2つのページを開いてるとします。(これ以外にも色々開いている可能性がありますが、今回は説明の為二つだけ。)
「A.html」「B.html」

A.htmlが通常のページ。
B.htmlはお申込みフォームのようなページ。

B.htmlのページは複数タブ開かせたくありません。

たとえばB.htmlがすでに開いている状態で、
A.htmlからのリンクで、さらにB2.html(仮にB2と仮定します)を別タブで開こうとしたとき、
B2.htmlは開かせず、すでにあるB.htmlにタブを切り替える。

といったことは可能でしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

<a target="特定の名前">リンク</a>のような形のリンクを開けば、同じ「特定の名前」を指定したものは同じタブで開くようになります(MDN)。

ただし、ユーザー側で強制的に「新しいタブで開く」とした場合には通用しないかもしれません。

投稿2018/05/28 00:41

maisumakun

総合スコア145121

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

最近のブラウザはセキュリティの関係でwindow間のfocus遷移を
極端に抑制しているものもあるので、意外に面倒な内容です。
ページの遷移にpostなど利用していないなら
以下のようにアンカーに同じtargetを指定してやり
一度クローズして再読込するのが精度が高い処理になります。

javascript

1window.addEventListener('DOMContentLoaded', function(e){ 2 var nWin; 3 document.addEventListener('click',function(e){ 4 var t=e.target; 5 var target=t.getAttribute("target"); 6 var href=t.getAttribute("href"); 7 if(t.nodeName=="A" && target!==""){ 8 e.preventDefault(); 9 if(typeof nWin=="undefined" || nWin.closed){ 10 console.log("not open"); 11 }else{ 12 console.log("opened"); 13 href=nWin.location.href; 14 nWin.close(); 15 } 16 nWin=window.open(href,target); 17 } 18 }); 19});

HTML

1<a href="b.html" target="hoge">1</a> 2<a href="b2.html" target="hoge">2</a>

投稿2018/05/28 01:26

yambejp

総合スコア114572

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/06/07 09:32

検証に時間がかかってしまいすみません。 ありがとうございます。 限りなく正解に近いかなと思いましたが、 ページがリロードされてしまうのはできれば避けたいです。
guest

0

擬似的になら出来るかも知れません。
postMessageでタブが開いたことを伝えて、B.htmlが開いているならB.htmlへのリンクを無効にするとか。
あとは、2つ目のB.htmlが開いたら内容を消すとか。

【window.postMessage - Web API インターフェイス | MDN】
https://developer.mozilla.org/ja/docs/Web/API/Window/postMessage

【Web Messaging API を使ってみる】
https://qiita.com/naoiwata/items/0a31d999b2dcd5098289

投稿2018/05/28 00:42

kei344

総合スコア69364

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

対応が難しそうなのでベストアンサーの方の内容で実装することにしました。
ありがとうございました。

投稿2018/06/28 02:18

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問