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

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

ただいまの
回答率

90.53%

  • JavaScript

    16322questions

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

  • HTML5

    3996questions

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

javascriptでブラウザのタブ操作

解決済

回答 4

投稿

  • 評価
  • クリップ 0
  • VIEW 390

yukkon

score 16

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

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

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

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

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

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

+5

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

checkベストアンサー

+4

最近のブラウザはセキュリティの関係で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);
    }
  });
});
<a href="b.html" target="hoge">1</a>
<a href="b2.html" target="hoge">2</a>

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/07 18:32

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

    キャンセル

+4

擬似的になら出来るかも知れません。
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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.53%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    ページングについて

    表題の件で、simple paginationjs というのがあります。 これを利用して、ページングを各ページに飛ばしたいのですが、国内の一般の例では、同じページ内の飛ばし方です。

  • 受付中

    指定したJavaScriptライブラリを使っているサイトを探す方法

    例えば「AngularJSを使っているサイト」のようにJavaScriptライブラリを指定して、そのライブラリを使っているサイトを検索する方法はありますか? 有名どころでどんなサ

  • 解決済

    initMouseEventは有効? / new MouseEventの引数として渡してもclien...

    質問1.initMouseEventは有効? ・このページ例にevt.initMouseEventと記載されていますが、この書き方は現在も有効でしょうか? ・このページ

  • 解決済

    javascriptって例えばどこに使われているの?

    プログラミングを始めて、1ヶ月経っていない人の質問なので、心温かい目でご覧下さいw 現在、HTMLを勉強し、webデザインが少し出来るようになってきたプログラミング初心者です

  • 解決済

    ブラウザーバック

    JavaScriptを使ってブラウザーバックを禁止にするにはどうすればいいでしょうか? ショッピングサイトの、お支払い方法の登録・確認→最終確認→購入といった購入フロー間でプラウ

  • 受付中

    JavaScriptのコンテンツを保存する方法

    現在とあるwebページを保存したいと思っているのですがうまくいかず困っています。 会員だけが閲覧できるテキストのコンテンツで、ログインすると閲覧できるようになっています

  • 受付中

    javascriptで、キャッシュを再実行させたい。どうすればよいですか?

    さっき質問して、はやとちり。解決したと思ったら、していませんでした。そこで、 もう一度質問させてください。 質問は: javascriptで、reload()すると、サーバーに

  • 受付中

    JavaScriptで文字列改行

    HTMLのテンプレートを設定によってJavaScriptで出力するアプリケーションを作っていて、 特殊文字を使って改行をしようとしたのですが、\nを入れても改行されず、空白が追

同じタグがついた質問を見る

  • JavaScript

    16322questions

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

  • HTML5

    3996questions

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