95 votes

Capturez l'événement de fermeture de la fenêtre contextuelle en JavaScript

J'ai besoin d'effectuer une action avant qu'une fenêtre contextuelle (en utilisant window.open ) ne se ferme.

Quelque chose comme ça va être bon :

 var new_window = window.open('some url')
new_window.onBeforeUnload = function(){ my code}

Comment puis-je y parvenir?

101voto

glortho Points 6288

Votre exemple fonctionnera tant que l'URL de la fenêtre contextuelle se trouve dans le même domaine que la page parente et que vous modifiez l'événement en minuscule :

 var new_window = window.open('some url')
new_window.onbeforeunload = function(){ /* my code */ }

13voto

valentinas Points 2670

Le nom de l'événement est onbeforeunload et non onBeforeUnload . JS est sensible à la casse.

8voto

cale_b Points 5864

Vous devez lier l' onbeforeunload à la fenêtre APRÈS son ouverture.

Le moyen le plus simple de le faire serait d'avoir le code javascript onbeforeunload dans le code source de la fenêtre.

Pour des explications détaillées, reportez-vous à ces deux questions très similaires ici et ici sur Stackoverflow.

5voto

Reza Points 375

L'événement onbeforeunload doit être ajouté après le chargement de la fenêtre contextuelle. Par exemple, vous pouvez l'ajouter à la fin de son événement de chargement comme ci-dessous ;

 const new_window = window.open('some url')
new_window.onload = function(){ 
    /* my code */ 
    this.onbeforeunload = function(){ /* my code */ }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X