OVH Cloud OVH Cloud

Insertion de fichier .txt

19 réponses
Avatar
Georges Saunier
Bonjour,

Dans un fichier .html, je souhaite inclure le contenu d'un fichier .txt et
me positionner, à chaque ouverture du fichier .html, en fin de document.
Cela est-il possible en Javascript ? Comment, dans un premier temps, inclure
un fichier .txt dans un page html (Iframe et Frameset étant exclu).

Merci de votre aide.

Georges Saunier

10 réponses

1 2
Avatar
Georges Saunier
Entre temps, j'ai trouvé un moyen.

Cf.
<http://obiewebsite.sourceforge.net/obie.php?Javascript_inclusion_function>

--

Georges Saunier
Avatar
Pierre Goiffon
"Georges Saunier" a écrit dans le message
de news:ccm30c$mc2$
Dans un fichier .html, je souhaite inclure le contenu d'un fichier
.txt et me positionner, à chaque ouverture du fichier .html, en fin
de document. Cela est-il possible en Javascript ? Comment, dans un
premier temps, inclure un fichier .txt dans un page html (Iframe et
Frameset étant exclu).


Plutôt que d'utiliser JavaScript, pourquoi ne pas utiliser une des
innombrables méthodes d'inclusion côté serveur ? SSI, PHP, ...

Pour se positionner en fin de fichier, ajouter une ancre (<a name=... ou ID)
et le tour est joué !

Avatar
loufoque
Georges Saunier a dit le 09/07/2004 15:42:

Entre temps, j'ai trouvé un moyen.

Cf.
<http://obiewebsite.sourceforge.net/obie.php?Javascript_inclusion_function>



Fonctionne que dans IE.
Sinon, je connais un moyen avec XPCOM pour Gecko aussi.

Avatar

Georges Saunier a dit le 09/07/2004 15:42:

Entre temps, j'ai trouvé un moyen.

Cf.
<http://obiewebsite.sourceforge.net/obie.php?Javascript_inclusion_function>



Fonctionne que dans IE.


et même (partiellement ?) dans mon IE Mac !
et pourtant il ne semble n'être fait référence
qu'à IE5.5 ou IE6 (donc pour PC)

Sinon, je connais un moyen avec XPCOM pour Gecko aussi.


si j'en crois le nom, XPCOM ne serait que pour PC Win ?
sinon, quoi t'est-ce ? où le trouver ?

--
******** (enlever/remove [OTER_MOI] du/from reply url) *******
Stéphane MORIAUX : mailto:
Aide aux Pages Perso (images & couleurs, formulaire, CHP, JS)
http://perso.wanadoo.fr/stephane.moriaux/internet/
**************************************************************


Avatar
loufoque
@SM a dit le 10/07/2004 01:58:

si j'en crois le nom, XPCOM ne serait que pour PC Win ?
sinon, quoi t'est-ce ? où le trouver ?


le XP de XPCOM ça veut dire Cross-Platform...
C'est un système pour faire des librairies en C/C++ qui passent partout.
C'est grâce à ça que Mozilla est portable si facilement.
C'est mis en place dans le Javascript des navigateurs Gecko (Mozilla...)
grâce à XPConnect.

Pour faire appel en Javascript directement aux interfaces C, c'est assez
compliqué. Par exemple :
Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
.getService(Components.interfaces.nsIPromptService);
Ce qui ressemble un peu à COM sous IEWin. Y'a des trucs pour faire du
SQL aussi par exemple.
Mais bon pour la plupart des trucs, y'a carrément un objet en Javascript.

Bon, pour aller chercher le contenu d'un fichier, on peut utiliser
l'objet Javascript XMLHttpRequest [1] qui ressemble volontairement à
celui de IE utilisable avec COM.

[1] http://xulplanet.com/references/objref/XMLHttpRequest.html

Avatar

@SM a dit le 10/07/2004 01:58:

si j'en crois le nom, XPCOM ne serait que pour PC Win ?
sinon, quoi t'est-ce ? où le trouver ?



Merci de l'adresse.

Admiration ! ! !
tu y comprends vraiment qque chose ?
Il n'y aurait pas une petite démo qque part ?

c'est tout en langue pas française
pas réussi à comprendre (au survol rapide sans traduction) :
- ça se passe côté serveur ?
- c'est pour Mozilla (essentiellement) ?
- l'internaute lambda verra ses pages inserrer du texte à la volée?
grâce au JS intégré de son navigateur
sans pré-télécharger-installer d'add-ons (d'additifs) ?

C'est vrai que tu avais dit toi-même que c'était assez compliqué ... !
Déjà il faudrait connaitre COM pour IE (je suppose que c'est pour Windows ?)
De ce que tu raccontes, il semblerait qu'il faille
créer des espèces de plug-ins (ou de fichiers .js .xul ?)
les intégrer aux navigateurs (ou aux navigateurs gecko exclusivement)
puis tenter de s'en servir pour étendre les possibilités du JS *traditionnel*

Bref ! c'est la grande brasse coulée ! ( glup)

le XP de XPCOM ça veut dire Cross-Platform...
C'est un système pour faire des librairies en C/C++ qui passent partout.
C'est grâce à ça que Mozilla est portable si facilement.
C'est mis en place dans le Javascript des navigateurs Gecko (Mozilla...)
grâce à XPConnect.

Pour faire appel en Javascript directement aux interfaces C, c'est assez
compliqué. Par exemple :
Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
.getService(Components.interfaces.nsIPromptService);
Ce qui ressemble un peu à COM sous IEWin. Y'a des trucs pour faire du
SQL aussi par exemple.
Mais bon pour la plupart des trucs, y'a carrément un objet en Javascript.

Bon, pour aller chercher le contenu d'un fichier, on peut utiliser
l'objet Javascript XMLHttpRequest [1] qui ressemble volontairement à
celui de IE utilisable avec COM.

[1] http://xulplanet.com/references/objref/XMLHttpRequest.html


--
******** (enlever/remove [OTER_MOI] du/from reply url) *******


Avatar
loufoque
@SM a dit le 11/07/2004 00:48:

Merci de l'adresse.

Admiration ! ! !
tu y comprends vraiment qque chose ?
C'est juste la liste de propriétés et de méthodes de l'objet.

Rien d'extraordinaire.

Il n'y aurait pas une petite démo qque part ?
C'est vrai qu'un petit exemple serait pas mal.


var request = new XMLHttpRequest();
request.open("GET", "http://site.com/fichier.ext", false);
request.send(null);

request.responseText contient le fichier en tant que chaîne
request.responseXML est un arbre DOM du fichier si celui-ci a été envoyé
avec un Content-Type text/xml, ou que le type mime a été modifié avec la
méthode overrideMimeType()

(enfin c'est pour une requête synchrone, donc send() est bloquant - on
peut aussi faire avec une requête asynchrone, mais alors là il faut
attendre que la requête soit réalisée en s'aidant de l'évenement
onreadystatechange, apparement)

c'est tout en langue pas française
Ça s'appelle l'anglais


- ça se passe côté serveur ?
Le javascript, c'est côté client.


- c'est pour Mozilla (essentiellement) ?
Mozilla et ses dérivés.

Enfin il semblerait que Safari ait aussi un objet XMLHttpRequest, mais
ils n'ont pas le système XPCOM, c'est une implémentation différente.
De toutes façons cet objet est carrément copié sur celui d'IE, donc on
peut facilement faire du code compatible IE/Moz/Safari (si on exclut les
additions de Moz à cet objet).
Dans IE, au lieu de faire new XMLHttpRequest ça doit être un truc du
style new ActiveXObject('Msxml2.XMLHTTP')

- l'internaute lambda verra ses pages inserrer du texte à la volée?
Si tu choisis d'insérer le texte, oui.

L'objet XMLHttpRequest permet de réaliser une requête HTTP. Ça sert
beaucoup dans le cas d'applicatifs XUL pour envoyer des données en POST
par exemple sans avoir à soumettre de formulaire, même pas de
rafraîchissement de page.
Ça renvoit aussi bien évidemment la réponse de la requête, sous forme de
texte et aussi sous forme d'arbre, s'il s'agit d'un document xml.
Après ce résultat on en fait ce qu'on veut, on peut par exemple
l'insérer dans le document courant, avec un peu de DOM c'est pas bien
difficile.

grâce au JS intégré de son navigateur
sans pré-télécharger-installer d'add-ons (d'additifs) ?
Rien à installer.


Avatar
Bobe
loufoque nous a dit le 11/07/2004 02:38:
@SM a dit le 11/07/2004 00:48:

Merci de l'adresse.

Admiration ! ! !
tu y comprends vraiment qque chose ?


C'est juste la liste de propriétés et de méthodes de l'objet.
Rien d'extraordinaire.

Il n'y aurait pas une petite démo qque part ?


C'est vrai qu'un petit exemple serait pas mal.

var request = new XMLHttpRequest();
request.open("GET", "http://site.com/fichier.ext", false);
request.send(null);

request.responseText contient le fichier en tant que chaîne
request.responseXML est un arbre DOM du fichier si celui-ci a été envoyé
avec un Content-Type text/xml, ou que le type mime a été modifié avec la
méthode overrideMimeType()

(enfin c'est pour une requête synchrone, donc send() est bloquant - on
peut aussi faire avec une requête asynchrone, mais alors là il faut
attendre que la requête soit réalisée en s'aidant de l'évenement
onreadystatechange, apparement)



Il y a de bons exemples par ici:
http://jibbering.com/2002/4/httprequest.html

Et une petite recherche avec 'xmlhttprequest' pour en avoir plus.

--
Bobe (Aurélien Maille)
http://webnaute.net

"la vie d'un geek est un combat perpétuel contre l'imperfection"


Avatar
G-Raph
Georges Saunier wrote:

Comment, dans un premier temps, inclure
un fichier .txt dans un page html (Iframe et Frameset étant exclu).


J'ai créé une fonction javascript qui cherche les tags <include
src="fichier.txt" /> et les
remplace automatiquement par le fichier à inclure (IE win & mozilla) :

var xmlDoc;
function importXML() {
var includes = document.getElementsByTagName ('include');
for (i = 0; i < includes.length; i++) {
if (document.implementation && document.implementation.createDocument) {
xmlDoc = document.implementation.createDocument("", "", null);
xmlDoc.load(includes[i].getAttribute('src'));
function displaymsg () {
container = document.createElement('div');
container.className = 'hidder';
includes[i].parentNode.insertBefore(container, includes[i]);
var objXMLSerializer = new XMLSerializer;
var strXML = objXMLSerializer.serializeToString(xmlDoc.documentElement);
container.innerHTML = strXML;
setTimeout ("container.className = 'hidder2';", 500);
}
xmlDoc.onload = displaymsg;
var strXML = objXMLSerializer.serializeToString(xmlDoc.documentElement);
}
else {
var xmlDoc = new ActiveXObject("Msxml2.DOMDocument");
xmlDoc.async = false;
xmlDoc.load(includes[i].getAttribute('src'));
root = xmlDoc.documentElement;
container = document.createElement('div');
container.className = 'hidder';
container.innerHTML = 'Loading XML...';
includes[i].replaceNode(container);
setTimeout ("container.innerHTML = root.xml; container.className =
'hidder2'; importXML();", 500);
importXML();
}}}

C'est un peu le bordel pour le moment, mais je compte bien en faire qq
chose de plus propre...
inconvénients :
le fichier à inclure doit être un fichier XML bien formé (encodage utf-8
si caractères spéciaux)...

sinon, j'ai une autre fonction qui inclue un fichier xml dans un
élément de la page :

function loadXML(xmlSrc, appendTo) {
if (document.implementation && document.implementation.createDocument) {
xmlDoc = document.implementation.createDocument("", "", null);
xmlDoc.load(xmlSrc);
function displaymsg () {
container = document.createElement('div');
container.className = 'hidder';
document.getElementById(appendTo).appendChild(container);
var objXMLSerializer = new XMLSerializer;
var strXML = objXMLSerializer.serializeToString(xmlDoc.documentElement);
container.innerHTML = strXML;
setTimeout ("container.className = 'hidder2';", 500);
setTimeout ("importXML();", 1000);
}
xmlDoc.onload = displaymsg;
var strXML = objXMLSerializer.serializeToString(xmlDoc.documentElement);
}
else {
var xmlDoc = new ActiveXObject("Msxml2.DOMDocument");
xmlDoc.async = false;
xmlDoc.load(xmlSrc);
root = xmlDoc.documentElement;

container = document.createElement('div');
container.className = 'hidder';
container.innerHTML = 'Loading XML...';

document.getElementById(appendTo).appendChild(container);
setTimeout ("container.innerHTML = root.xml; container.className =
'hidder2'; importXML();", 500);

}}

exemple :
<a onclick="loadXML('fichier.xml', 'id_de_l_objet')">include</a>
<div id="id_de_l_objet"></div>

Avatar
Pierre Goiffon
"G-Raph" a écrit dans le
message de news:40f548ff$0$7894$
J'ai créé une fonction javascript qui cherche les tags <include
src="fichier.txt" /> et les
remplace automatiquement par le fichier à inclure (IE win & mozilla) :
(...)

C'est un peu le bordel pour le moment, mais je compte bien en faire qq
chose de plus propre...


?!! Mais pourquoi donc ne pas utiliser les technologies d'inclusion côté
serveur ? C'est éprouvé, robuste, ça tourne et ne nécessite par définition
rien côté client !

1 2