javascript - ウィンドウを更新せずに、以前に window.open で開いたウィンドウに切り替えるにはどうすればよいですか?
phpcn_u1582
phpcn_u1582 2017-05-19 10:34:22
0
3
859

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

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

phpcn_u1582
phpcn_u1582

全員に返信(3)
淡淡烟草味

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

リーリー
いいねを押す +0
为情所困

使用html5history相关API

history.pushState()

history. popstateイベントなど

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

いいねを押す +0
某草草

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
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート