146 votes

Sélectionner un élément dans une iframe avec jQuery

Dans notre application, nous analysons une page web et la chargeons dans une autre page dans une iframe. Tous les éléments de cette page chargée ont leur ID de jeton. Je dois sélectionner les éléments en fonction de ces identifiants. Autrement dit, je clique sur un élément de la page principale et je sélectionne l'élément correspondant dans la page de l'iframe. Avec l'aide de jQuery, je procède de la manière suivante :

function selectElement(token) {
     $('[tokenid=' + token + ']').addClass('border'); 
}

Cependant, avec cette fonction, je ne peux sélectionner que les éléments de la page en cours, et non ceux de l'iFrame. Quelqu'un pourrait-il me dire comment sélectionner les éléments dans l'iFrame chargée ?

Gracias.

185voto

Darin Dimitrov Points 528142
var iframe = $('iframe'); // or some other selector to get the iframe
$('[tokenid=' + token + ']', iframe.contents()).addClass('border');

Il convient également de noter que si le src de cette iframe pointe vers un domaine différent, pour des raisons de sécurité, vous ne pourrez pas accéder au contenu de cette iframe en javascript.

8 votes

Gardez à l'esprit que $('iframe') ne renvoie pas directement l'iframe. Vous devez l'extraire du tableau.

1 votes

Merci pour la volonté d'aider. Mais cela ne semble pas fonctionner.

3 votes

@cycero, cela devrait fonctionner. Génèrez-vous cette iframe dynamiquement ? N'oubliez pas que si vous faites pointer l'élément src de cette iframe vers un autre domaine que le vôtre, pour des raisons de sécurité, vous ne pourrez pas accéder à son contenu.

60voto

Kevin Bowersox Points 48223

Jetez un coup d'œil à cet article : http://praveenbattula.blogspot.com/2009/09/access-iframe-content-using-jquery.html

$("#iframeID").contents().find("[tokenid=" + token + "]").html();

Placez votre sélecteur dans la méthode find.

Il se peut toutefois que cela ne soit pas possible si l'iframe ne provient pas de votre serveur. D'autres messages parlent d'erreurs de refus d'autorisation.

jQuery/JavaScript : accès au contenu d'une iframe

1 votes

Cela permet d'obtenir le code HTML de l'élément, mais comment ajouter une classe CSS à l'élément sélectionné ? $("#iframeDiv").contents().find("[tokenid=" + token + "]").addClass("border") ; ne semble pas fonctionner.

1 votes

Obtenez-vous des erreurs de refus d'autorisation ? Pouvez-vous me donner le code html de l'iframe ?

0 votes

Non, il n'y a pas de problème de refus d'autorisation.

24voto

fareed namrouti Points 3830

Lorsque votre document est prêt, cela ne signifie pas que votre iframe l'est aussi,
vous devez donc écouter l'événement de chargement de l'iframe, puis accéder à votre contenu :

$(function() {
    $("#my-iframe").bind("load",function(){
        $(this).contents().find("[tokenid=" + token + "]").html();
    });
});

-6voto

tibersky Points 33

S'il s'agit d'accéder à l'IFrame via la console, par exemple Chrome Dev Tools, vous pouvez simplement sélectionner le contexte des requêtes DOM via le menu déroulant (voir l'image).

Chrome Dev Tools - Selecting the iFrame

-10voto

Voici un simple JQuery qui permet de faire glisser une div dans un seul conteneur :

$("#containerdiv div").draggable( {containment: "#containerdiv ", scroll: false} );

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