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 ?
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.Utiliser l'
API
liée à l'historique
dehtml5
html5
的history
相关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.