2010-07-19 5 views
2

J'ai un iFrame sur ma page qui affiche un document XML.Comment accéder au document XML dans un iFrame?

<iframe id="iFrame2" name="iFrame2" width="100%" height="100%"> 

Je dois accéder au document XML dans l'iFrame à partir de la page parent. Comment puis-je faire cela?

Lorsque je tente:

console.log(iFrame2.document); 

Je reçois l'erreur suivante:

Permission denied for <http://localhost:3000> to get property Window.document from <http://www.imageshack.us>. 

Répondre

1

Voir la FAQ comp.lang.javascript:

http://www.jibbering.com/faq/#frameRef

+0

Merci pour votre réponse. Je ne suis pas sûr si je lis correctement, mais pour obtenir des informations de l'iFrame, dois-je faire un postMessage de l'iFrame au document parent? Je n'ai pas de contrôle sur le document XML, donc si c'est le cas, je ne suis pas sûr de pouvoir le faire. – ben

+0

@ben: 'postMessage' ne vous aidera pas avec XML; c'est pour travailler avec des documents HTML. –

0

javascript? Peut-être quelque chose comme ça document.getElementById('iFrame2').contentWindow.document

1

Je ne crois pas qu'il existe un moyen multi-navigateur pour accéder à un document XML sur un domaine différent. Le moyen le plus simple consiste à configurer un petit proxy sur votre serveur qui saisit les données, puis de simplement faire un appel Ajax au serveur. Je n'ai jamais utilisé Rails, donc je ne sais pas exactement à quoi cela ressemblerait sur le côté serveur (vous devrez créer une question séparée pour cela), mais en gros vous l'auriez configuré afin que votre serveur puisse, sur demande, télécharger ce fichier XML et le recracher sous forme de texte. Le client obtiendrait alors ces données XML en utilisant une requête Ajax (Google que si vous ne savez pas ce que c'est) et le manipuler avec JavaScript.

Donc, en supposant que vous utilisez jQuery, votre domaine est www.example.com, et vous avez une vue appelée getxml qui obtient les données XML et il retourne, vous auriez quelque chose comme ça dans le JavaScript:

$.get('http://www.example.com/getxml', function(xml) { 
    // Manipulate the `xml` variable here 
}, 'xml'); 

(Voir jQuery.get() pour la documentation.)

+0

Merci pour votre réponse. Je suis assez nouveau pour le web dev, pourriez-vous me diriger dans la direction d'une tute sur la façon de faire cela? – ben

+0

@ben: Certainement. Faites-vous du développement côté serveur? Ou faites-vous seulement la partie JavaScript du développement? Si vous faites du côté serveur, quelle langue utilisez-vous? –

+0

Merci. J'utilise Ruby on Rails. – ben

Questions connexes