Comment écrire un code html dans un textbox ?

Résolu
mdemo Messages postés 90 Date d'inscription mardi 21 mars 2006 Statut Membre Dernière intervention 10 mai 2010 - 18 déc. 2006 à 11:55
mdemo Messages postés 90 Date d'inscription mardi 21 mars 2006 Statut Membre Dernière intervention 10 mai 2010 - 18 déc. 2006 à 21:22
Bonjour,

Je souhaite afficher le code complet d'un iframe dans une page, du genre " id="test" etc....

Ce code est généré dynamiquement, et l'objectif est que les visiteurs du site puissent le copier en le sélectionnant.

Je l'ai mis dans un textbox, avec enabled=false, et tout se passe bien dans IE. Le enabled est à false afin d'éviter l'erreur qui dit que l'on cherche à exécuter un script...

Mais dans firefox la sélection est impossible, donc il me faut une autre solution.

Avez-vous une idée ?

Un server.htmlencode transforme le code donc ne me convient pas. J'ai aussi pensé à ajouter un bouton copier dans le clipboard, mais là encore ça n'a pas l'air simple avec firefox...

Merci d'avance.

8 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
18 déc. 2006 à 19:29
ValidateRequest permet juste d'éviter qu'on enregistre et affiche du texte contenant du script javascript ... du moment que tu n'affiches pas le texte que l'utilisateur peut saisir il n'y a aucun soucis.

Pour afficher du texte dans un div c'est tout con :

Cyril - MVS - MCP
3
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
18 déc. 2006 à 13:02
Bonjour,

je n'ai pas trop compris ce que tu cherches à faire ? pourquoi un server.htmlencode ne te convient pas ? c'est normal qu'il transforme le code en fait il remplace les caractères spéciaux par exemple > vers > dans la source HTML mais en rendu tu verras bien un > ca évite que le navigateur interprete le signe comme un début de balise HTML ...

<hr />Cyril - MVS - MCP
0
mdemo Messages postés 90 Date d'inscription mardi 21 mars 2006 Statut Membre Dernière intervention 10 mai 2010
18 déc. 2006 à 16:16
Bonjour Cyril,

Je comprends bien l'intérêt du htmlencode mais dans mon cas je souhaite donner la possibilité de copier le code exact d'un iframe.
Regarde par exemple youtube : pour chaque video tu as le code qu'il te suffit de coller sans aucune modif, par exemple:

<object width="425" height="350">

http://www.youtube.com/v/12PsUW-8ge4">

name="wmode" value="transparent">

</object>

Idem daylimotion qui le donne dans un div.

Je te rassure mon appli n'a aucun rapport, mais le principe est identique de ce point de vue.

Un validaterequest à false doit faire l'affaire, mais je ne suis pas fana.

As-tu une idée ?

Merci.
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
18 déc. 2006 à 16:42
Je comprend pas quel est le problème !

latextbox.text = "<object width="425" height="350">http://www.youtube.com/v/12PsUW-8ge4">

name="wmode" value="transparent">

http://www.youtube.com/v/12PsUW-8ge4]" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></object>";

La propriété text est automatiquement htmlencodé, et ca fera comme sur youtube & co, qu'est-ce qui ne te convient pas la dedans ?

<hr />Cyril - MVS - MCP
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mdemo Messages postés 90 Date d'inscription mardi 21 mars 2006 Statut Membre Dernière intervention 10 mai 2010
18 déc. 2006 à 18:27
C'est exactement ce que je fais, et en effet ça s'affiche correctement sauf que au prochain aller-retour serveur tu te retrouves avec :

Une valeur Request.Form potentiellement dangereuse a été détectée à partir du client (ctl00$ContentPlaceHolder1$TxtBxIF="

D'où le enabled=false qui évite ça parfaitement, mais je ne peux alors sélectionner le texte que dans IE et pas dans Firefox.

Et d'où aussi la solution radicale de mettre le validaterequest à false.

Ou suis-je complètement à côté de la plaque ?
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
18 déc. 2006 à 18:41
tu peux aussi mettre ton texte dans un div que tu modifies en CSS pour qu'il soit plus joli :-) et vu que tu n'auras plus de champs formulaire tu n'auras pas ce message. Mais désactiver le validateRequest n'est pas une chose horrible je le fais sur quasi tout mes sites, il suffit de savoir ce qu'on fait derriere.

<hr />Cyril - MVS - MCP
0
mdemo Messages postés 90 Date d'inscription mardi 21 mars 2006 Statut Membre Dernière intervention 10 mai 2010
18 déc. 2006 à 19:08
Merci Cyril pour tes conseils, mais sous quelle forme mets-tu le texte dans un Div ? Le texte est généré côté serveur, et j'ai déjà essayé avec un label, mais sans succès.
 
Concernant l'annulation du validateRequest, peux-tu me confirmer qu'à partir du moment où il n'y a aucune zone de saisie dans la page il n'y a aucun risque dans d'un point de vue attaque que dysfonctionnement ? (ça me semble évident mais j'aimerais en avoir la confirmation).

Merci.
0
mdemo Messages postés 90 Date d'inscription mardi 21 mars 2006 Statut Membre Dernière intervention 10 mai 2010
18 déc. 2006 à 21:22
En fait je viens de réessayer avec le label et ça marche à partir du moment où fait le htmlencode.
Ta solution avec le literal marche impeccable aussi.

Mon erreur était de penser que le htmlencode allait modifier l'apparence du texte à l'affichage. C'est d'ailleurs le cas quand on voit le source de la page, car c'est le but du jeu,  mais à l'affichage le texte est effectivement décodé et réapparait correctement, sans provoquer d'erreur.

Encore merci pour ton aide.
0
Rejoignez-nous