newWind.onunload = function() { alert('test'); }
IE ne vous laissera pas attribuer une fonction d'un contexte de fenêtre sur le déchargement [avant] d'une autre fenêtre, pour une raison quelconque. Vous pouvez affecter une fonction étrangère à d'autres gestionnaires d'événements, y compris newWind.document.body.onunload
, mais ce n'est pas une bonne idée. Tout d'abord parce que la récupération de place d'IE est basée sur des fenêtres, si vous fermez ou naviguez dans la fenêtre d'ouverture, la fenêtre contextuelle essaiera d'exécuter une fonction morte ou fonctionnera avec des variables inutilisées. Et d'autre part parce que vous ne savez pas à partir de l'ouvreur quand le document contextuel est suffisamment chargé pour pouvoir définir le gestionnaire. Au moment de l'appel open
, le chargement du document n'a peut-être pas du tout démarré, auquel cas vous ne pouvez pas y définir un gestionnaire d'événements en toute sécurité. Vous aurez donc besoin d'un court délai avant de définir le gestionnaire onunload, et l'utilisateur pourrait fermer la fenêtre à ce moment-là. Et l'ouvreur ne sait pas combien de temps il faut attendre; à la place, le dialogue enfant devrait rappeler le parent pour lui dire qu'il est prêt. Mieux vaut que l'enfant pop-up se charge de recevoir ses propres événements et appelle le premier à le faire savoir à leur sujet.
Les scripts de fenêtres croisées ont des pièges interminables. Essayez de l'éviter autant que possible. Pour les boîtes de dialogue, utilisez toujours des éléments dans la page, qui sont beaucoup plus fiables et moins gênants que les fenêtres contextuelles.
en fonction de votre titre, vouliez-vous dire à mettre newWind.onbeforeunload? Je considère également que définir onbeforeunload dans la page "settings.url" n'est pas une option? – scunliffe