ホームページ  >  に質問  >  本文

javascript - ウィンドウを更新せずに、以前に window.open で開いたウィンドウに切り替えるにはどうすればよいですか?

プロジェクトでこのような問題に遭遇しました。
親ウィンドウで window.open(location.href, projectId) を使用して、projectId を window.name として新しいウィンドウを開きます。
次に、親ウィンドウで、プロジェクト ID に基づいて、ウィンドウを更新せずに、対応する開いているウィンドウに直接切り替えたいと考えています。

window.open(location.href, projectId) を直接使用すると、対応するウィンドウに切り替わりますが、ページが更新されてしまいます。更新せずに切り替えるだけの方法はありますか?

phpcn_u1582phpcn_u15822683日前777

全員に返信(3)返信します

  • 淡淡烟草味

    淡淡烟草味2017-05-19 10:36:22

    変数を使用して window.open の戻り値を保存します。戻り値はそのウィンドウの window 对象,执行 focus メソッドです。

    リーリー

    返事
    0
  • 为情所困

    为情所困2017-05-19 10:36:22

    使用html5history相关API

    history.pushState()

    history. popstateイベントなど

    関連コンテンツについては、ブラウザMDNの履歴記録を参照してください

    返事
    0
  • 某草草

    某草草2017-05-19 10:36:22

    A ウィンドウが B ウィンドウを開き、B ウィンドウが C ウィンドウを開き、A は B への参照を持ち、B は C への参照を持っているとします。
    現時点では、AウィンドウからBウィンドウへのジャンプ、またはBウィンドウからCウィンドウへのジャンプは、window.focus()を使用して直接実装できます。
    しかし、ウィンドウ A の C にジャンプしたいのです。さまざまな API を確認した結果、window.name を通じて対応するウィンドウ オブジェクトを直接取得する方法が見つかりませんでした。 localstorageを試してみましたが、ウィンドウオブジェクトを保存できませんでした。この状況はちょっと面倒です。
    考えた結果、どうしても実現しなければならないのであれば、方法はあるはずです。大まかに言うと、localStorage は、初めて開いたときのツリー構造全体を保存するために使用されます。ルート ノードは A、A の子ノードは B、B の子ノードは C です。このようにして、すべてのウィンドウは最終的にジャンプされる最後のウィンドウの所有者を見つけることができ、postMessage を通じてそのウィンドウの所有者にレイヤーごとに通知し、ターゲットの window.focus() メソッドをトリガーできるようになります
    ただし、この方法では、スイッチング回数が多いとツリー構造が少し複雑になり、各層の通信オーバーヘッドがかなり大きくなることが予想されます。ブラウザに window.name に基づいてウィンドウ オブジェクトを取得するメソッドがあれば、さらに便利になります。

    返事
    0
  • キャンセル返事