2010-02-03 6 views
2

J'essaie d'obtenir un fichier texte à partir d'un site Web externe, pour une utilisation avec des scripts qui s'exécutent à partir de mon propre domaine. Exemple:Accéder à un fichier texte d'un autre domaine?

// run from www.mysite.com: 
<html> 
    <head> 
    <script> 
     function blah() { 
     var data = document.getElementById("thedata"); 
     alert(data.innerHtml); 
     } 
    </script> 
    </body> 
    <body> 
    <embed id="thedata" src="http://someotherwebsite.com/data.txt" HEIGHT=60 WIDTH=144> 
    </body> 
</html> 

Ce n'est pas le meilleur exemple, mais au fond, je voudrais utiliser javascript pour obtenir le contenu importé de ce fichier texte externe, puis faire des calculs sur elle. Je suis presque sûr à 100% que ce n'est pas autorisé, à cause de toutes les choses malveillantes que vous pouvez faire avec l'accès aux données d'autres sites et tout ça. Je voulais juste voir s'il y avait une certaine façon légitime de le faire,

Merci

Répondre

1

AFAIK, il y a des façons de laisser ajax interdomaine arriver, mais je suis toujours juste fait une page PHP sur le marché local domaine qui charge et imprime la page externe, qui peut alors être consulté par javascript sans problème.

+0

Vraiment je pourrais le faire, mais alors je suis chargé de toute la bande passante supplémentaire droite? Comme si mes utilisateurs voulaient saisir des documents de wikipedia pour les manipuler, alors je distribuais tout ce contenu à travers mon domaine au lieu de laisser leurs navigateurs faire ce travail en allant directement à la source? – user246114

+1

En fait, Wikipédia a une API (http://www.mediawiki.org/wiki/API) et il supporte JSONP, donc vous pouvez/utilisez/cross-domain. –

+0

Oui, pas moyen de contourner ça, malheureusement. – monksp

0

Vous avez raison. Comme toujours, il existe diverses exceptions arcanes. le seul que je peux penser dans ce cas est si data.txt analyse comme JavaScript.

0

Je n'ai pas testé dans tous les navigateurs, (*), mais je suis sûr que vous pouvez le charger dans un iFrame invisible et l'adresse du contenu à partir de là ...

<!DOCTYPE html>
<html>
<head></head>
<body>
<iframe name="myiframe" src="http://localhost/~ben/test_text.txt"></iframe>
</body>
</html>

Et puis utiliser Javascript pour répondre à l'objet iFrame, (je l'ai utilisé une version Jquery rapide ici) ...

<script>
alert(window.myiframe.document.body.innerHTML);
</script>

(*) Cette référence suggère son possible dans la plupart des navigateurs, y compris IE ..
http://roneiv.wordpress.com/2008/01/18/get-the-content-of-an-iframe-in-javascript-crossbrowser-solution-for-both-ie-and-firefox/

+0

Ceci est cross-browser ... mais seulement pour le même domaine. Il/ne/ne fonctionnera pas sur plusieurs domaines. –