Je voudrais manipuler le HTML à l'intérieur d'une iframe en utilisant jQuery.
Je pensais pouvoir le faire en définissant le contexte de la fonction jQuery comme étant le document de l'iframe, quelque chose comme suit :
$(function(){ //document ready
$('some selector', frames['nameOfMyIframe'].document).doStuff()
});
Cependant, cela ne semble pas fonctionner. Un peu d'inspection me montre que les variables dans frames['nameOfMyIframe' ;]
undefined` à moins que j'attende un moment pour que l'iframe se charge. Cependant, lorsque l'iframe se charge, les variables ne sont pas accessibles (j'obtiens des erreurs de type "autorisation refusée").
Quelqu'un connaît-il un moyen de contourner ce problème ?
Je pense que ce que vous faites est soumis à la [politique de la même origine][1]. Cela devrait être la raison pour laquelle vous obtenez des erreurs de type permission refusée.
Vous devez attacher un événement au gestionnaire de chargement d'une iframe, et exécuter le js à cet endroit, afin de vous assurer que l'iframe a fini de se charger avant d'y accéder.
$().ready(function () {
$("#iframeID").ready(function () { //The function below executes once the iframe has finished loading
$('some selector', frames['nameOfMyIframe'].document).doStuff();
});
};
Ce qui précède résoudra le problème du "pas encore chargé", mais en ce qui concerne les autorisations, si vous chargez une page dans l'iframe qui provient d'un domaine différent, vous ne pourrez pas y accéder en raison de restrictions de sécurité.
Avez-vous essayé la méthode classique, qui consiste à attendre que le chargement soit terminé en utilisant la fonction ready intégrée de jQuery ?
$(document).ready(function() {
$('some selector', frames['nameOfMyIframe'].document).doStuff()
} );
K