JeuWeb - Crée ton jeu par navigateur
Récupérer contenu iframe d'un domaine externe en JS? - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Récupérer contenu iframe d'un domaine externe en JS? (/showthread.php?tid=6470)



Récupérer contenu iframe d'un domaine externe en JS? - Argorate - 28-10-2012

Bonjour,

j'aimerais faire un truc simple mais qui apparemment ne l'ai pas tant que ça ^^

je charge une <iframe src="http://autre.site.que.le.mien.com"> et j'aimerais pouvoir me balader dans le HTML de cette iframe via jQuery en l'occurence, mais impossible...

j'ai bien essayé:

$('iframe').html()
$('iframe').text()
$('iframe').val()
$('iframe').contents().html()

Mais cela ne marche pas.

Après une recherche sur le net j'ai trouver que la bonne manière de faire été:

$('iframe').contents().find('body').html()

Mais il été dit que cela pose probleme avec une iframe qui donne sur un autre domaine que le courent, en effet j'obtiens l'erreur suivante:

"Error: Permission denied to access property 'ownerDocument'
[Stopper sur une erreur]

(4 out of range 3)"

Je ne sais donc pas comment faire pour accéder simplement aux contenu de mon iframe, une idée?!

Merci.


RE: Récupérer contenu iframe d'un domaine externe en JS? - Sephi-Chan - 28-10-2012

Tu ne peux pas, à cause des règles de same origin policy.


RE: Récupérer contenu iframe d'un domaine externe en JS? - niahoo - 28-10-2012

Tu peux y accéder côté serveur.


RE: Récupérer contenu iframe d'un domaine externe en JS? - Akira777 - 29-10-2012

Jette un oeil à cette librairie PHP : Simple HTML Dom

Code PHP :
<?php

$html
= file_get_html('http://www.foobarbaz.com/');
$iframe = $html->find('iframe[id=foo]');

?>

Avec jQuery (par exemple), tu récupères cette iframe depuis ton serveur en AJAX, tu prends le retour HTML de cet appel que tu peux ensuite manipuler en créant un nouvel objet.

Code PHP :
<?php 
var returned_html = $.ajax([...]); /* Logique de récupération du code via serveur */
var iframe = $(returned_html);



RE: Récupérer contenu iframe d'un domaine externe en JS? - Plume - 29-10-2012

Ou, si tu peux entrer en contact avec la personne qui possède l'autre domaine, voir pour définir les politiques CORS.


RE: Récupérer contenu iframe d'un domaine externe en JS? - Argorate - 30-10-2012

Le problème c'est que j'ai besoin d'utiliser la session associé au domaine externe pour accéder à la page correctement. (d'où l'utilité de l'iframe qui, elle transmet la session), mais j'ai peur qu'au vu du code de Simple HTML Dom, cela ne prenne pas en compte les sessions...


RE: Récupérer contenu iframe d'un domaine externe en JS? - Sephi-Chan - 30-10-2012

Dans ce cas il faut que tu transmettes les cookies avec la requête HTTP.


RE: Récupérer contenu iframe d'un domaine externe en JS? - Akira777 - 30-10-2012

Effectivement, tu peux transmettre le cookie. Mais pour essayer la méthode que j'ai décrite essai simplement de transmettre le SESSID...

Code PHP :
<?php
$url
= 'http://www.foobarbaz.com/?PHPSESSID=' .session_id();

$html = file_get_html($url);
$iframe = $html->find('iframe[id=foo]');
?>