Existe t-il une balise qui fasse l'inverse de <noscript>

Existe t-il une balise qui fasse l'inverse de <noscript> - HTML/CSS - Programmation

Marsh Posté le 18-05-2007 à 21:41:05    

Bonjour,
 
Voilà, dans la partie "soumettre une news" de mon site j'ai un éditeur de texte qui se charge de mettre du texte séléctionné entre deux balises (exp: en cliquant sur le bouton nommé "gras" =>[gras]blabla..[/gras]...). Donc comme cet éditeur est crée avec du javascript, les personnes qui n'ont pas activés le js ne pourront pas l'utiliser.
Donc au lieu de mettre un message d'alerte avec <noscript>, je préfférerais masquer l'éditeur de texte.
Existe t-il une balise qui puisse faire ce que je veut ?
 
Merci.

Reply

Marsh Posté le 18-05-2007 à 21:41:05   

Reply

Marsh Posté le 18-05-2007 à 22:05:19    

Les utilisateurs qui ont désactivé javascript ont l'habitude de  ce genre de problème et ils ont à leur disposition des outils (comme BBCodeXtra) qui leur permettent de faire ce qu'ils veulent.
Sinon, il suffit d'utiliser javascript (document.write) pour ne pas afficher ce qu'on veut masquer à ces utilisateurs.


Message édité par Dan_A le 18-05-2007 à 22:06:52
Reply

Marsh Posté le 18-05-2007 à 22:29:00    

Tout d'abord, merci pour ta réponse.
Pour BBCodeextra, je ne pense pas que cela puisse fonctionner pour mes utilisateur puisque mes balises sont d'un format différent, par exemple moi j'utilise [gras] au lieu de [b], et en plus je n'ai qu'un nombre limité de balises possibles (url, gras, italique souligné et couleur du texte). Donc si ils en utilisent d'autres, mes regex n'en tiendront pas compte et forcement le texte ne sera pas formaté.
Sinon, pour javascript (document.write), je ne sais pas comment l'utiliser vu que je suis null en javascript et apparement c'est bien une fonction javascript. Donc, comment utiliser du javascript pour masquer quelque chose à quelqu'un qui ne l'a pas activé  :heink:  ?  
Peux tu me donner un petit exemple de "javascript (document.write)" pour voir si ca fonctionne.
Merci encore une fois  

Reply

Marsh Posté le 18-05-2007 à 22:37:47    

<script type="text/javascript">
document.write("<p>Ce texte ne s'affiche qu'avec javascript activé<\/p>" );
</script>

Reply

Marsh Posté le 18-05-2007 à 22:51:01    

Merci beaucoup, ca fonctionne mais seulement avec du text, mais quand je l'utilise par exmple sur un input ca ne fonctionne plus:
<script type="text/javascript">
document.write("<input type="submit" value="Aperçu" onclick="this.form.action='apercu_modif.php';this.form.submit()" />" );
</script>
 
Edit1: je viens de m'appercevoir que je n'ai pas échapé le slash qui ferme l'input. Je test et je reviens :)
Edit2: Ca ne fonctionne toujours pas, j'ai du loupé quelque chose.


Message édité par Iori2004 le 18-05-2007 à 22:54:54
Reply

Marsh Posté le 19-05-2007 à 10:45:42    

Il faut échapper les guillemets doubles ou utiliser des guillemets simples dans la chaîne à afficher.

Reply

Marsh Posté le 19-05-2007 à 17:06:27    

Voila c'est fait. Merci infiniment pour ton aide.

Reply

Marsh Posté le 20-05-2007 à 13:51:37    

Code :
  1. var input=document.createElement('input');
  2. input.setAttribute('type', 'submit');
  3. input.setAttribute('value', 'submit');
  4. if(_IE){
  5.     input.attachEvent(
  6.         'onclick',
  7.         function(){
  8.             var form=window.event.srcElement.form;
  9.             form.setAttribute('action', 'apercu_modif.php');
  10.             form.submit();
  11.         }
  12.     );
  13. }else{
  14.     input.addEventListener(
  15.         'click',
  16.         function(evt){
  17.             var form=evt.target.form;
  18.             form.setAttribute('action', 'apercu_modif.php');
  19.             form.submit();
  20.         },
  21.         false
  22.     );
  23. }
  24. document.getElementByTagName('body')[0].appendChild(input);
 

C'est préférable de passer par le DOM.

Message cité 1 fois
Message édité par MacIntoc le 20-05-2007 à 13:52:03
Reply

Marsh Posté le 21-05-2007 à 00:49:14    

MacIntoc a écrit :

Code :
  1. var input=document.createElement('input');
  2. input.setAttribute('type', 'submit');
  3. input.setAttribute('value', 'submit');
  4. if(_IE){
  5.     input.attachEvent(
  6.         'onclick',
  7.         function(){
  8.             var form=window.event.srcElement.form;
  9.             form.setAttribute('action', 'apercu_modif.php');
  10.             form.submit();
  11.         }
  12.     );
  13. }else{
  14.     input.addEventListener(
  15.         'click',
  16.         function(evt){
  17.             var form=evt.target.form;
  18.             form.setAttribute('action', 'apercu_modif.php');
  19.             form.submit();
  20.         },
  21.         false
  22.     );
  23. }
  24. document.getElementByTagName('body')[0].appendChild(input);
 

C'est préférable de passer par le DOM.

 

Encore faut-il que ton code marche sachant que le fait de setter le type d'un input fait gueuler IE5/6.
et puis en plus ton code, si fallait faire propre on ferait :

Code :
  1. var input=document.createElement('input');
  2. setType(input, "submit" );
  3. input.setAttribute('value', 'submit');
  4. addEvent(input, 'click', function() {
  5. var form=this.form; //pas besoin de passer par un quelconque event à la con sachant que Form est une référence direct au formulaire englobant le input.
  6. form.setAttribute('action', 'apercu_modif.php');
  7. form.submit();
  8. });
  9. document.body.appendChild(input); //et oui il y a aussi une référence directe au body.
  10. function addEvent( obj, type, fn ) {
  11. if (obj.addEventListener)
  12.  obj.addEventListener( type, fn, false );
  13. else if (obj.attachEvent)
  14. {
  15.  obj["e"+type+fn] = fn;
  16.  obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
  17.  obj.attachEvent( "on"+type, obj[type+fn] );
  18. }
  19. }
  20. function setType(node, type) {
  21.    try {
  22.    node.type = type;
  23.    } catch(e) {
  24.    if (node.outerHTML) {
  25.     node.outerHTML=node.outerHTML.replace(/\btype=\w+\b/,'type="text"');
  26.    }
  27.    }
  28. }
 

addEvent étant une fonction simple, utile et efficace pour ajouter des events sur les objets  que tu trouveras ici :
http://www.quirksmode.org/blog/arc [...] ner_1.html

 

setType étant une fonction que j'ai codé un peu porcasse mais efficace pour pallier au problème puisque IE plantait lorsqu'on veut setter le type d'un input.

 


et accessoirement les if(_IE) on peut s'en passer dans ton cas, il suffit de faire tout simplement :

Code :
  1. if (window.attachEvent) {
  2. input.attachEvent = [...]
  3. } else {
  4. [...]
  5. }
 


Message édité par gatsu35 le 21-05-2007 à 00:54:54
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed