Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Variables et fonctions 'a partager' entre Perl et Javascript

6 réponses
Avatar
Timothée POISOT
Bonjour a tous

Voila mon probleme

Je suis en train de mettre au point un genre de portail de publication,
et je me suis lanc=E9 =E0 le faire en perl (pour pouvoir faire une mise
en page genre wiki, et plein d'autres raisons).

Bref, je mm suis dit que puisqu'il s'agissait de voir des articles,
autant charger la page une fois, et modifier le innerhtml d'une div css
via une fonction javascript.

en gros, j'ai un script perl qui va lister les repertoires et les
fichiers des repertoires (comme ca le menu est fait), et qui a chaque
fichier du repertoire associe un lien type

<a href=3D"#" onClick=3D"refresh(create_innerhtml($path))">$file</a>
(le tout mis en forme pour perl evidemment, j'ai jart=E9 les "." et '.'
pour plus de facilit=E9 de lecture

bref, la fonction perl create_innerhtml est tout simplement une
fonction qui recupere le contenu d'un fichier, le passe a la
moulinette-wiki pour le mettre en forme, et le retourne sous forme de
tableau.

La fonction refresh en JS est un modele du genre, rien de tr=E8s
novateur de ce cot=E9 la , juste une bonne vieille fonction de
remplacement.

function refresh(texte)
{

document.getElementById("corps").innerHTML =3D texte;
}

Le probleme est la :

comment faire pour que mon innerhtml contienne le TEXTE du fichier et
non le NOMBRE DE LIGNES (avouons que je me doutais un peu que ca
arriverait...)

J'ai caress=E9 l'id=E9e de passer le texte en argument de la fonction,
mais c'est hors de question puisque ca reviendrait a charger tout le
site d'un coup (et oui...) alors que perl peut lire les fichiers au
moment ou on s'en sert.

Est-ce que quelqu'un a une id=E9e de comment faire (par exemple pour
utiliser du code perl dans la fonction javascript) ?

6 réponses

Avatar
Florian Sinatra
*Timothée POISOT* @ 10/09/2006 18:10 :
Bonjour a tous

Voila mon probleme

Je suis en train de mettre au point un genre de portail de publication,
et je me suis lancé à le faire en perl (pour pouvoir faire une mise
en page genre wiki, et plein d'autres raisons).


Quel est le rapport entre le langage et la mise en page ?

Bref, je mm suis dit que puisqu'il s'agissait de voir des articles,
autant charger la page une fois, et modifier le innerhtml d'une div css
via une fonction javascript.


Et si Javascript est indisponible ?

(Et qu'est-ce qu'une div css ?)

<a href="#" onClick="refresh(create_innerhtml($path))">$file</a>
(le tout mis en forme pour perl evidemment, j'ai jarté les "." et '.'
pour plus de facilité de lecture

bref, la fonction perl create_innerhtml est tout simplement une
fonction qui recupere le contenu d'un fichier, le passe a la
moulinette-wiki pour le mettre en forme, et le retourne sous forme de
tableau.


Comment veux-tu appeler une fonction perl dans une page HTML ? Le client
a un interpréteur activeperl ?

(Je suppose que le tableau contient une ligne par valeur)

La fonction refresh en JS est un modele du genre, rien de très
novateur de ce coté la , juste une bonne vieille fonction de
remplacement.

function refresh(texte)
{

document.getElementById("corps").innerHTML = texte;
}

Le probleme est la :

comment faire pour que mon innerhtml contienne le TEXTE du fichier et
non le NOMBRE DE LIGNES (avouons que je me doutais un peu que ca
arriverait...)


innerHTML contient la valeur de la variable texte. A toi d'y placer le
TEXTE non ?

J'ai caressé l'idée de passer le texte en argument de la fonction,
mais c'est hors de question puisque ca reviendrait a charger tout le
site d'un coup (et oui...) alors que perl peut lire les fichiers au
moment ou on s'en sert.

Est-ce que quelqu'un a une idée de comment faire (par exemple pour
utiliser du code perl dans la fonction javascript) ?


Je répète, comment veux-tu exécuter du code perl sur le poste client ?

Soit c'est toi qui t'exprimes mal, soit tu mélanges tout.

Bonne chance quand même.

Avatar
ASM
Bonjour a tous

Voila mon probleme

Je suis en train de mettre au point un genre de portail de publication,
et je me suis lancé à le faire en perl (pour pouvoir faire une mise
en page genre wiki, et plein d'autres raisons).


1) la mise en page est faite via css et suivant une page-gabari
(tu changes la feuille de styles et toute la présentation pourra
être diffeérente) le perl ne devrait pas avoir à y tripatouiller.
2) je ne connais pas perl, mais ça ne doit pas être plus bête que du php
et in fine créer, ou seulement récupérer, du code html

Bref, je mm suis dit que puisqu'il s'agissait de voir des articles,
autant charger la page une fois, et modifier le innerhtml d'une div css
via une fonction javascript.


Oui, ça c'est possible, on peut via JavaScript, à la volée modifier le
contenu d'un div en lui incorporant un fichier pré-machouillé par ailleurs.
Mais pas d'une façon telle que tu la présentes.
(ce n'est pas aussi simpliste)

en gros, j'ai un script perl qui va lister les repertoires et les
fichiers des repertoires (comme ca le menu est fait), et qui a chaque
fichier du repertoire associe un lien type

<a href="#" onClick="refresh(create_innerhtml($path))">$file</a>


plutôt :

<a href="index.asp?$path/$file"
onClick="montrer(this.href);return false;">$file.title</a>

de façon à ce que sans javascript ça puisse *aussi* fonctionner

La fonction montrer('index.asp?mondossier/monfichier')
est une fonction qui va aller chercher le fichier :
mondossier/monfichier pour l'afficher dans un div de la page à l'écran.

à défaut de JS le lien d'href 'index.asp?mondossier/monfichier'
charge index.asp
qui doit savoir quoi faire de 'mondossier/monfichier'

(le tout mis en forme pour perl evidemment, j'ai jarté les "." et '.'
pour plus de facilité de lecture

bref, la fonction perl create_innerhtml est tout simplement une
fonction qui recupere le contenu d'un fichier, le passe a la
moulinette-wiki pour le mettre en forme,


Bon, bonnard, mais là dans le code html (du menu) on s'en moque
complètement, ce sera pour la phase ultérieure.

On a juste besoin que le perlage inscrive les bons chemins aux fichiers
dans les bons emplacement de la page-gabari (les liens).

et le retourne sous forme de tableau.


ha! non !
tu te débrouilles pour que ce soit du html !

La fonction refresh en JS est un modele du genre, rien de très
novateur de ce coté la , juste une bonne vieille fonction de
remplacement.

function refresh(texte)


comme tu dis plus bas : méthode idiote

c'est là qu'entre en scène la fonction XMLHttpRequest

le JS décortique le lien, en sort le chemin au fichier (l'article)
et le passe au tremblement du XMLHttpRequest qui va finalement remplir
le div réceptacle qui va bien.

document.getElementById("corps").innerHTML = texte;


oui, en fin de job, à peu près ça.

comment faire pour que mon innerhtml contienne le TEXTE du fichier et
non le NOMBRE DE LIGNES (avouons que je me doutais un peu que ca
arriverait...)


Ben ... si l'article à charger est déjà un fichier texte, ou même un
fichier reconstitué à partir d'une BdD, on n'a pas besoin que le perl en
relise les lignes, on envoie le fichier-article, comme pour une page web
normale.

Maintenant si l'article n'est pas en html, faudra probablement une
moulinette de conversion.

Est-ce que quelqu'un a une idée de comment faire (par exemple pour
utiliser du code perl dans la fonction javascript) ?


Non.
C'est au perl à se dépatouiller.
(ou voir à voir si le XML ... ?)

Ma 'tite démo pour le XMLHttpRequest
(le travail côté serveur, si pas de JS s'y fait en SSI !!!)
http://stephane.moriaux.perso.orange.fr/truc/HttpRequest/index
Cliquer d'abord sur le menu "Menu avec JS"

essayer ensuite avec le menu "Menu html" ou recharger JS désactivé
pour voir la différence.

--
Stephane Moriaux et son [moins] vieux Mac

Avatar
Timothée POISOT

*Timothée POISOT* @ 10/09/2006 18:10 :
Bonjour a tous

Voila mon probleme

Je suis en train de mettre au point un genre de portail de publication,
et je me suis lancé à le faire en perl (pour pouvoir faire une mise
en page genre wiki, et plein d'autres raisons).


Quel est le rapport entre le langage et la mise en page ?


Je voulais dire "syntaxe"

Bref, je mm suis dit que puisqu'il s'agissait de voir des articles,
autant charger la page une fois, et modifier le innerhtml d'une div css
via une fonction javascript.


Et si Javascript est indisponible ?


Il se trouve qu'il est disponible... (utilisation locale)

(Et qu'est-ce qu'une div css ?)


Une div avec une class du css
Usenet... ou comment chipoter sur la forme sans toucher au fond...

<a href="#" onClick="refresh(create_innerhtml($path))">$file</a>
(le tout mis en forme pour perl evidemment, j'ai jarté les "." et '.'
pour plus de facilité de lecture

bref, la fonction perl create_innerhtml est tout simplement une
fonction qui recupere le contenu d'un fichier, le passe a la
moulinette-wiki pour le mettre en forme, et le retourne sous forme de
tableau.


Comment veux-tu appeler une fonction perl dans une page HTML ? Le client
a un interpréteur activeperl ?


C'est un .cgi (on a aussi un truc très bien appelé ssi... mais
passons, je ne l'utilise pas)

(Je suppose que le tableau contient une ligne par valeur)


non, c'est un tableau perl

La fonction refresh en JS est un modele du genre, rien de très
novateur de ce coté la , juste une bonne vieille fonction de
remplacement.

function refresh(texte)
{

document.getElementById("corps").innerHTML = texte;
}

Le probleme est la :

comment faire pour que mon innerhtml contienne le TEXTE du fichier et
non le NOMBRE DE LIGNES (avouons que je me doutais un peu que ca
arriverait...)


innerHTML contient la valeur de la variable texte. A toi d'y placer le
TEXTE non ?


c'est le probleme : le texte est donné par l'execution de la fonction
perl...


Avatar
Timothée POISOT

Bonjour a tous

Voila mon probleme

Je suis en train de mettre au point un genre de portail de publication,
et je me suis lancé à le faire en perl (pour pouvoir faire une mise
en page genre wiki, et plein d'autres raisons).


1) la mise en page est faite via css et suivant une page-gabari
(tu changes la feuille de styles et toute la présentation pourra
être diffeérente) le perl ne devrait pas avoir à y tripatouill er.
2) je ne connais pas perl, mais ça ne doit pas être plus bête que d u php
et in fine créer, ou seulement récupérer, du code html


la encore, je voulais dire "syntaxe wiki"

Bref, je mm suis dit que puisqu'il s'agissait de voir des articles,
autant charger la page une fois, et modifier le innerhtml d'une div css
via une fonction javascript.


Oui, ça c'est possible, on peut via JavaScript, à la volée modifier le
contenu d'un div en lui incorporant un fichier pré-machouillé par ail leurs.
Mais pas d'une façon telle que tu la présentes.
(ce n'est pas aussi simpliste)


et pourtant cette methode la marche avec du texte...

en gros, j'ai un script perl qui va lister les repertoires et les
fichiers des repertoires (comme ca le menu est fait), et qui a chaque
fichier du repertoire associe un lien type

<a href="#" onClick="refresh(create_innerhtml($path))">$file</a>


plutôt :

<a href="index.asp?$path/$file"
onClick="montrer(this.href);return false;">$file.title</a>

de façon à ce que sans javascript ça puisse *aussi* fonctionner

La fonction montrer('index.asp?mondossier/monfichier')
est une fonction qui va aller chercher le fichier :
mondossier/monfichier pour l'afficher dans un div de la page à l'écra n.

à défaut de JS le lien d'href 'index.asp?mondossier/monfichier'
charge index.asp
qui doit savoir quoi faire de 'mondossier/monfichier'

(le tout mis en forme pour perl evidemment, j'ai jarté les "." et '.'
pour plus de facilité de lecture

bref, la fonction perl create_innerhtml est tout simplement une
fonction qui recupere le contenu d'un fichier, le passe a la
moulinette-wiki pour le mettre en forme,


Bon, bonnard, mais là dans le code html (du menu) on s'en moque
complètement, ce sera pour la phase ultérieure.

On a juste besoin que le perlage inscrive les bons chemins aux fichiers
dans les bons emplacement de la page-gabari (les liens).

et le retourne sous forme de tableau.


ha! non !
tu te débrouilles pour que ce soit du html !


c'est un tableau donc chaque 'case' (tableau perl) est une ligne du
texte

La fonction refresh en JS est un modele du genre, rien de très
novateur de ce coté la , juste une bonne vieille fonction de
remplacement.

function refresh(texte)


comme tu dis plus bas : méthode idiote

c'est là qu'entre en scène la fonction XMLHttpRequest

le JS décortique le lien, en sort le chemin au fichier (l'article)
et le passe au tremblement du XMLHttpRequest qui va finalement remplir
le div réceptacle qui va bien.

document.getElementById("corps").innerHTML = texte;


oui, en fin de job, à peu près ça.

comment faire pour que mon innerhtml contienne le TEXTE du fichier et
non le NOMBRE DE LIGNES (avouons que je me doutais un peu que ca
arriverait...)


Ben ... si l'article à charger est déjà un fichier texte, ou même un
fichier reconstitué à partir d'une BdD, on n'a pas besoin que le perl en
relise les lignes, on envoie le fichier-article, comme pour une page web
normale.

Maintenant si l'article n'est pas en html, faudra probablement une
moulinette de conversion.


comme expliqué plus haut, l'article n'est pas en html, il est converti
par une fonction perl, celle que je voudrais executer pour que son
return remplisse le innerhtml...

Est-ce que quelqu'un a une idée de comment faire (par exemple pour
utiliser du code perl dans la fonction javascript) ?


Non.
C'est au perl à se dépatouiller.
(ou voir à voir si le XML ... ?)

Ma 'tite démo pour le XMLHttpRequest
(le travail côté serveur, si pas de JS s'y fait en SSI !!!)
http://stephane.moriaux.perso.orange.fr/truc/HttpRequest/index
Cliquer d'abord sur le menu "Menu avec JS"

essayer ensuite avec le menu "Menu html" ou recharger JS désactivé
pour voir la différence.

--
Stephane Moriaux et son [moins] vieux Mac



Avatar
Michel Rodriguez
Timothée POISOT wrote:

Bref, je mm suis dit que puisqu'il s'agissait de voir des articles,
autant charger la page une fois, et modifier le innerhtml d'une div css
via une fonction javascript.

en gros, j'ai un script perl qui va lister les repertoires et les
fichiers des repertoires (comme ca le menu est fait), et qui a chaque
fichier du repertoire associe un lien type


J'ai un peu de mal a comprendre ce que tu veux faire. Est ce que tu veux
pre-generer tes pages HTML, auquel cas tu peux utiliser un module de
"templates" (genre Template Toolkit, HTML::Template ou Text::Template)
pour generer tes pages depuis un programme en Perl? Ou est-ce que tu
veux pluto faire dans l'Ajax, ou la (les) div est(sont) generee(s)
dynamiquement, et dans ce cas la CGI::Ajax me semble assez pratique,
pour generer l'architecture qui permet au Javascript et au Perl de
communiquer (et, comme tu le decris, de remplir des elements HTML avec
le contenu retourne par une fonction Perl a laquelle tu peux passer un
(des) argument(s) depuis le HTML).

--
mirod

Avatar
Timothée POISOT

Timothée POISOT wrote:

Bref, je mm suis dit que puisqu'il s'agissait de voir des articles,
autant charger la page une fois, et modifier le innerhtml d'une div css
via une fonction javascript.

en gros, j'ai un script perl qui va lister les repertoires et les
fichiers des repertoires (comme ca le menu est fait), et qui a chaque
fichier du repertoire associe un lien type


J'ai un peu de mal a comprendre ce que tu veux faire. Est ce que tu veux
pre-generer tes pages HTML, auquel cas tu peux utiliser un module de
"templates" (genre Template Toolkit, HTML::Template ou Text::Template)
pour generer tes pages depuis un programme en Perl? Ou est-ce que tu
veux pluto faire dans l'Ajax, ou la (les) div est(sont) generee(s)
dynamiquement, et dans ce cas la CGI::Ajax me semble assez pratique,
pour generer l'architecture qui permet au Javascript et au Perl de
communiquer (et, comme tu le decris, de remplir des elements HTML avec
le contenu retourne par une fonction Perl a laquelle tu peux passer un
(des) argument(s) depuis le HTML).

--
mirod


Amha c'est la réponse qu'il me fallait...

Je vais essayer de lire la doc' du module CGI::Ajax, et de voir comment
ca fonctionne (puisqu'en effet, les pages html sont générées à la
volée, sur demande de l'utilisateur).