javascript - Comment basculer vers une fenêtre précédemment ouverte avec window.open sans actualiser la fenêtre?
phpcn_u1582
phpcn_u1582 2017-05-19 10:34:22
0
3
892

J'ai rencontré un tel problème dans le projet.
Utilisez window.open(location.href, projectId) dans la fenêtre parent pour ouvrir une nouvelle fenêtre avec projectId comme window.name.
Puis dans la fenêtre parent, je souhaite basculer directement vers la fenêtre ouverte correspondante en fonction du projectId, mais sans actualiser la fenêtre.

L'utilisation directe de window.open(location.href, projectId) passera à la fenêtre correspondante, mais la page sera actualisée. Existe-t-il un moyen de basculer uniquement sans actualiser ?

phpcn_u1582
phpcn_u1582

répondre à tous(3)
淡淡烟草味

Utilisez une variable pour enregistrer la valeur de retour de window.open, et la valeur de retour est la méthode window 对象,执行 focus de cette fenêtre.

win1 = window.open(url1);
win2 = window.open(url2);

// 后续用 win1 这个引用执行 focus 方法
if (!win1.closed) {
  win1.focus();
}
为情所困

Utiliser l'API liée à l'historique de html5html5history相关API

history.pushState()

history. popstate

history.pushState()

history.popstateÉvénements et plus#🎜🎜# #🎜🎜#Pour le contenu associé, veuillez vous référer à l'historique du navigateur MDN#🎜🎜#
某草草

Supposons qu'une fenêtre ouvre la fenêtre B, que la fenêtre B ouvre la fenêtre C, que A ait une référence à B et que B ait une référence à C.
À l'heure actuelle, passer d'une fenêtre A à une fenêtre B ou passer d'une fenêtre B à une fenêtre C peut être directement implémenté à l'aide de window.focus().
Mais je veux passer à C dans la fenêtre A. Après avoir vérifié diverses API, je n'ai pas trouvé comment obtenir directement l'objet fenêtre correspondant via window.name. J'ai essayé le stockage local mais je n'ai pas pu enregistrer l'objet fenêtre. Cette situation est un peu gênante.
Après y avoir réfléchi, si cela doit être réalisé, il devrait y avoir un moyen. En gros, localStorage est utilisé pour sauvegarder l'intégralité de l'arborescence. Le nœud racine est A lorsqu'il est ouvert pour la première fois, le nœud enfant de A est B et le nœud enfant de B est C. De cette façon, toutes les fenêtres peuvent enfin trouver le propriétaire de la dernière fenêtre à sauter, puis notifier le propriétaire de cette fenêtre couche par couche via postMessage, lui permettant de déclencher la méthode window.focus() cible
Mais de cette façon, le projet La structure arborescente deviendra un peu compliquée si le nombre de temps de commutation est élevé et si la surcharge de communication de chaque couche est estimée assez élevée. Ce serait beaucoup plus pratique si le navigateur disposait d'une méthode pour obtenir l'objet window basé sur window.name.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal