11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Sauriez-vous comment faire pour sélectionner l'ensemble du code source d'une page web (qui n'est chargée qu'une seule fois) et le recopier dynamiquement à l'intérieur d'un champ <textarea> de cette même page ?

Voici un exemple de page Web :
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="select_and_copy.js"></script>
</head>
<body>
<h1>Ma page</h1>
<p><textarea name="message" rows="30" COLS="80"></textarea></p>
</body>
</html>
Note : j'ai précisé plus haut qui n'est chargée qu'une seule fois afin d'écarter la solution consistant à retélécharger la page, en utilisant Ajax par exemple... Smiley smile
Merci et bonne année 2008 Smiley smile
Modérateur
Salut,

Es-tu sûr d'avoir besoin de Javascript pour celà ?
<?php

header('Content-type: text/html; charset=utf-8');

$deb = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<title>Exemple</title>
	</head>
	<body>

<form action="">
	<div>
		<textarea name="message" rows="30" cols="80">';

$fin = '</textarea>
	</div>
</form>

	</body>
</html>';

echo $deb, htmlspecialchars($deb), htmlspecialchars($fin), $fin;

?>

Modifié par koala64 (04 Jan 2008 - 12:52)
a écrit :
Es-tu sûr d'avoir besoin de Javascript pour celà ?
Oui, car il faudrait que ça se fasse coté client...
Modérateur
Pourquoi ?! Ce que contient le textarea est optionnel ? Je ne comprends pas l'utilité de la chose, à vrai dire... Smiley confuse

Tu souhaites faire apparaître ce code lorsque l'utilisateur clique quelquepart ou dès le chargement de la page ?
Modifié par koala64 (04 Jan 2008 - 14:19)
En chargeant coté client l'ensemble du code source d'une page téléchargé, je pourrai économiser de la bande passante et contrôler son intégrité, afin de m'assurer que cette même page n'a pas été altérée ou modifiée pendant son téléchargement. Ainsi, avec une implémentation d'une fonction de hachage en JavaScript (par exemple sur Paj's Home), je devrai pouvoir y parvenir. Mais avant cela, je dois déjà être capable de sélectionner l'ensemble de la source... pour le mettre dans un <textarea> ou juste dans le buffer Smiley smile
bon alors c'est qu'une idée.
Jamais trop fait.

avec les fonctions ob_start ob_get_content etc... ( les fonctions de cache ) j'avais vu des pages où le code est d'abord écrit tous dans une variable pui afficher au moment du ob_flush() ou ob_get_content un truc comme ça.

j'imagine que si tu fais un peu pareil. c.a.d créer ton code dans une (ou des) variables. l'afficher ensuite ça doit etre faisable en php pur.

bien sur si tu veux eviter un effet fractal renonce a mettre dans le textarea le code qui met le code dans le textarea...ou t'es pas sorti de l'auberge.

edit: a lire ton post precedent c'est pas trop ça . quoi que ma reflexion sur le fractal. tu auras du mal a faire un md5 du code si par code tu comprends le code qui met dans le code.

En plus coté client la page que le client consulte n'est pas forcément un reflet parfait de ton code source . A moins que tu n'utilises absolument aucune fonction serveur.
Modifié par CPascal (04 Jan 2008 - 14:48)
Modérateur
Le contrôle d'intégrité est faisable uniquement via PHP, les fonctions de hachage n'étant pas réservées à Javascript.
Si tu passes par JS pour faire cela, tu rends ce contrôle optionnel. Est-ce vraiment ce que tu souhaites ?

Quant au fait d'économiser de la bande passante, mieux vaut faire une requête plutôt que deux (appel de la page + requête Ajax).
Là, tu irais à contre-sens car tu n'économiserais rien sans compter que tu ralentirais le chargement de la page.

Et puis si tu passes par Ajax, PHP est nécessaire donc pourquoi compliquer la chose ? Smiley smile
a écrit :
je pourrai économiser de la bande passante et contrôler son intégrité, afin de m'assurer que cette même page n'a pas été altérée ou modifiée pendant son téléchargement.


bon plus je relis ça plus je me pose cette question : est-ce possible?

le même source même si c'est du statique sera peut-être interprété différemment selon le navigateur ou le système du client. je pense notamment a des caractéres invisibles comme le BOM.

bien sur j'ai déjà vu de la verification par md5 ou autre fct de cryptage de fichiers. mais peut-on réaliser la même chose sur des pages web?
Modifié par CPascal (04 Jan 2008 - 15:13)
koala64 a écrit :
Le contrôle d'intégrité est faisable uniquement via PHP, les fonctions de hachage n'étant pas réservées à Javascript.
On peut utiliser une fonction de hachage dès lors qu'elle est implémentée dans un langage quelconque. Il en existe sous PHP et sous JavaScript, notamment.
koala64 a écrit :
Si tu passes par JS pour faire cela, tu rends ce contrôle optionnel. Est-ce vraiment ce que tu souhaites ?
Oui, même si certains navigateurs ne pourront en profiter, je préfère faire ce contrôle pour les autres plutôt que de ne rien contrôler du tout.
koala64 a écrit :
Quant au fait d'économiser de la bande passante, mieux vaut faire une requête plutôt que deux (appel de la page + requête Ajax).
Là, tu irais à contre-sens car tu n'économiserais rien sans compter que tu ralentirais le chargement de la page.

Et puis si tu passes par Ajax, PHP est nécessaire donc pourquoi compliquer la chose ? Smiley smile
Absolument, je suis bien d'accord. Je souhaite justement utiliser JavaScript, seulement.