Je suis tombé sur un scénario impair dans lequel window.open() ne déclenche pas l'événement 'load' si la fenêtre actuelle est déjà à l'écran.Javascript window.open observation quand la fenêtre existe déjà en utilisant Prototype
Synopsis
J'ai un bouton lorsque vous cliquez dessus exécute quelques javascript et ouvre une page dans une nouvelle fenêtre. Code standard que tout développeur JS a vu. Lorsque la méthode (partie d'une classe plus grande) est appelée, elle vérifie si elle a une référence à la fenêtre (this.preview_window). Si c'est le cas, il fonctionnera, il essaiera de l'ouvrir à nouveau. Une fois ouvert, il exécute une méthode de mise à jour sur cette fenêtre.
Problème
Si la fenêtre n'existe pas, tout se passe comme prévu. Si la fenêtre existe mais que la classe ne contient pas de référence, la référence est acquise avec window.open(), mais la fonction de mise à jour n'est pas appelée.
pertinentes du Code
// This code is run whenever there is no reference to the window
this.preview_window = window.open('/folder/page.php','page_previewer');
Event.observe(this.preview_window, 'load',this.update.bindAsEventListener(this));
Le reste du code a été testé beaucoup donc je suis assez confiant que je me manque quelque chose dans la façon dont l'événement de chargement fonctionne. Les fonctions window.open() et update() fonctionnent comme prévu dans tous les cas sauf celui-ci.