J'ai un document parent avec un iframe intégré. À l'intérieur de l'iframe, j'ai un champ de téléchargement. Une fois que l'utilisateur sélectionne un fichier à télécharger, je déclenche un événement de changement jQuery. Sur cet événement, je veux définir une variable dans la fenêtre parent sur true, afin que le parent sache que le téléchargement a commencé.
Est-ce que quelqu'un sait comment faire ça?
J'essayais cela, mais cela n'a pas fonctionné:
var test;
$("#newsletter_email").change(function() {
parent.window.test = true;
});
$('#send').click(function() {
if (test) {
alert('File has been uploaded!');
} else {
alert('You need to upload a file');
}
});
Les variables de la portée globale sont auto-exposées en tant que propriétés DOM de leur objet window
contenant.
Cela signifie que
var foo = 'bar';
est analogue à
window.foo = 'bar';
Ce qui signifie que vous pouvez lire la portée globale de l'objet anywindow
auquel vous pouvez obtenir une référence. Ce que nous pouvons également impliquer ici, c'est que l'utilisation de window
est implicite. Même lorsque vous ne tapez pas explicitement "fenêtre", il est là quand même.
Et comme les cadres eux-mêmes sont également auto-exposés en tant que propriétés DOM de l'objet window
courant, cela signifie que vous pouvez également accéder à l'objet window
de tout autre cadre.
La propriété parent
des objets window
contient une référence à l'objet window
du parent de cette fenêtre (s'il y en a un). Puisque les iframes ont très certainement une fenêtre parent, alors tout ce que je viens de taper se résume à ceci
// set the global variable 'foo' in the parent global scope
parent.foo = 'bar';
Vous pouvez également le stocker dans le localStorage et le lire et l'écrire, à condition que le document principal et l'iframe partagent le même domaine.