Je suis en train de le faire:Attatching setTimeout() à window.opener de fenêtre de rappel unload
$(function() {
var parent = window.opener;
$(window).bind('unload', function() {
parent.setTimeout(function() {
parent.console.log('Fired!');
}, 200);
}
});
L'exemple ci-dessus fonctionne bien dans FF, etc. Chrome, mais pas IE8. Dans ce dernier, le rappel spécifié dans setTimeout() ne semble jamais être déclenché.
La raison est que je voudrais exécuter du code dans la fenêtre parent (window.opener), quand une fenêtre popup est fermée. Je voudrais que le popup soit responsable de ceci, et pas l'inverse.
Juste pour montrer que le concept fonctionne:
$(function() {
var parent = window.opener;
$(window).bind('unload', function() {
parent.console.log('Fired!');
}
});
Appel console.log immédiatement dans le rappel lié à décharger (comme dans l'exemple ci-dessus) semble fonctionner dans tous les navigateurs (ne pas cibler IE6 ici) , mais dès que j'ajoute setTimeout() au mix, ça casse.
Est-ce possible? Est-ce un problème de portée?
Aww bummer. Devinez que je dois essayer une approche différente alors. Y a-t-il une chance qu'il soit possible de passer une fonction de rappel de 'l'enfant' à son parent? Les commentaires ne sont probablement pas un bon endroit pour le code, mais je pense quelque chose le long des lignes: parent. $ (Parent) .trigger ('myEvent', {'callback': function() {alert ('foo') ;}); J'ai essayé ce qui précède et le rappel semble également lié à la fenêtre enfant. Y a-t-il une solution à cela? – peterfarsinsen