Bienvenue sur JeuxOnLine - MMO, MMORPG et MOBA !
Les sites de JeuxOnLine...
 

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Inserer les smileys et les tags ou on veut dans le texte

Par le lama de lima le 14/12/2002 à 2:40:39 (#2783101)

Pour ceux qui tappent le texte et mettent en forme ensuite, l'interface est pas pratique. On met insérer un smiley ou un tag bold par exemple, et ca le colle en bas de la boite de texte. Du coup il faut le copier et le remonter plus haut, c'est super pénible !

Il suffirait ( :p ) de faire une fonction qui détecte le point ou se trouve le curseur, et faire l'insertion a cet endroit. Il me semble que cela ne fonctionne "qu" 'avec IE... ok mais ca serait pas si mal si 90 % des internautes pouvaient mettre en forme + simplement leurs textes ;)

Par Arkanne le 14/12/2002 à 3:05:07 (#2783208)

Je n'y connait rien.

Par Erkethan le 14/12/2002 à 3:10:50 (#2783232)

L'interface des smilies est en Javascript, comme toute les options de compositions des messages d'ailleurs, et si il existe des fonctions pour détécter si le curseur text est actif ou non (cliqué dans le cadre de texte ou non) il n'en existe aucune pour renvoyer la position du curseur. Pis a la réflexion, en cliquant sur un smilies ou un bouton, tu désactive le curseur texte, qui n'a plus alors aucune position ;)

Le plus simple, c'est que tu intègre tes smilies et tags au fur et à mesure dans la rédaction, comme cela tu ne sera pas géné :)

Pis, a force, tu connaitra les codes par coeur, et n'aura plus recours au boutons :)

Par Conrad McLeod le 14/12/2002 à 7:32:34 (#2783710)

Je dois dire que la remarque est pertinente, pour avoir été confronté au phénomène... Cela dit, je tape presque instinctivement les abréviations pour les rares smileys que j'utilise, au coeur même du texte. (comme :D pour afficher un http://forums.jeuxonline.info/ubb/biggrin.gif, etc...)

Par le lama de lima le 15/12/2002 à 7:01:26 (#2791064)

faux.

IE a partir de la version 5.5 peut detecter le curseur et placer le smiley la ou se trouve le curseur avant de cliquer sur ledit smiley.

Il parait que ce comportement JS est + ou - bien interpreté par les autres nav, mais j'ai pas testé. En tout cas avec IE ca fonctionne :)

Je pense pas que je puisse donner l'url d'un forum qui le fait fonctionner (pas de pub), mais la fonction se trouve dans ce souk d'apres un rapide coup d'oeil au source :
(pas le temps de decortiquer)

var style = new Array('g','/g','i','/i','s','/s','email','/email','lien=','/lien','img','/img','quote','/quote','fixed','/fixed','cpp','/cpp','url','/url');
var stockage = new Array('0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0');
lien="http://";

function MM_findObj(n, d) { //v3.0
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&id.layers.length;i++) x=MM_findObj(n,d.layers.document); return x;
}

function storeCaret (textEl)
{
if (textEl.createTextRange)
textEl.caretPos = document.selection.createRange().duplicate();
}

function insertAtCaret (textEl, text)
{
if (textEl.createTextRange && textEl.caretPos)
{
var caretPos = textEl.caretPos;
caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
}
}

function insertInCaret (textEl, text, text2)
{
if (textEl.createTextRange && textEl.caretPos)
{
var caretPos = textEl.caretPos;
selectedtext = caretPos.text;
caretPos.text =caretPos.text.charAt(caretPos.text.length - 1) == '' ? text + '' : text;
caretPos.text = caretPos.text + selectedtext + text2;
}
}

function palette(id,vernav)
{
if (vernav>=4)
{
MM_findObj('contenu').focus();
if (MM_findObj('contenu').createTextRange && MM_findObj('contenu').caretPos)
{
var caretPos = MM_findObj('contenu').caretPos;
if (caretPos.text.length>0)
{
if (id!=8)
{
insertInCaret(MM_findObj('contenu'),"["+style[id]+"]","["+style[id+1]+"]");
}
else
{
geturl = prompt("veuillez entrer l'url",'http://');
insertInCaret(MM_findObj('contenu'),"["+style[id]+geturl+"]","["+style[id+1]+"]");
}
}
else
{
if ( (countbalise('['+style[id],'contenu')+countbalise('['+style[id+1],'contenu'))%2 == 0)
{
if (id!=8)
{
insertAtCaret(MM_findObj('contenu'),"["+style[id]+"]");
}
else
{
geturl = prompt("veuillez entrer l'url",'http://');
insertAtCaret(MM_findObj('contenu'),"["+style[id]+geturl+"]");
}
}
else
{
insertAtCaret(MM_findObj('contenu'),"["+style[id+1]+"]");
}
MM_findObj('contenu').focus()
}
}
}
else
{
if (stockage[id] == '0')
{
var temp = document.hop.contenu.value;
document.hop.contenu.value=temp+' '+'['+style[id]+']';
stockage[id] = '1';
}
else
{
var temp = document.hop.contenu.value;
document.hop.contenu.value=temp+'['+style[id+1]+']'+' ';
stockage[id] = '0';
}
}
}
function countbalise(b,ch)
{
count = 0;
pos = MM_findObj(ch).value.indexOf(b);
while ( pos != -1 )
{
count++;
pos = MM_findObj(ch).value.indexOf(b,pos+1);
}
return count;
}
function insertElt(MyString,vernav)
{
if (vernav>=4)
{
MM_findObj('contenu').focus();
if ((MM_findObj('contenu').createTextRange) && (MM_findObj('contenu').caretPos))
{
var caretPos = MM_findObj('contenu').caretPos;
if (caretPos.text.length>0)
insertInCaret(MM_findObj('contenu'),MyString,");
else
insertAtCaret(MM_findObj('contenu'),MyString);
}
}
else
{
var temp = document.hop.contenu.value;
document.hop.contenu.value=temp+MyString;
}
}
function insertTag(MyString,vernav)
{
if (vernav>=4)
{
MM_findObj('contenu').focus();
if (MM_findObj('contenu').createTextRange && MM_findObj('contenu').caretPos)
{
var caretPos = MM_findObj('contenu').caretPos;
if (caretPos.text.length>0)
{
insertInCaret(MM_findObj('contenu'),"["+MyString+"]","[/"+MyString+"]");
}
else
{
if ( (countbalise('['+MyString,'contenu')+countbalise('[/'+MyString,'contenu'))%2 == 0)
{
insertAtCaret(MM_findObj('contenu'),"["+MyString+"]");
}
else
{
insertAtCaret(MM_findObj('contenu'),"[/"+MyString+"]");
}
MM_findObj('contenu').focus();
}
}
}
else
{
if (stockage[12] == '0')
{
var temp = document.hop.contenu.value;
document.hop.contenu.value=temp+' '+'['+MyString+']';
stockage[12] = '1';
}
else
{
var temp = document.hop.contenu.value;
document.hop.contenu.value=temp+'[/'+MyString+']'+' ';
stockage[12] = '0';
}
}
}

bon courage :p

Par Emvé Anovel le 15/12/2002 à 10:36:17 (#2791452)

si ce n'est pas compatible avec Mozilla, Mind ne hackera jamais le script ! :ange:

JOL Archives 1.0.1
@ JOL / JeuxOnLine