Hello !
En ces temps de forums, tout le monde utilise punBB, phpBB ou d'autres utilisant le célèbre bbCode.
Je développe en ce moment une classe PHP + JavaScript similaire au bbCode (que j'ai appelée TeXtS) pour un site sur lequel je travaille, mais davantage axé pour les contenus et générant du code conforme aux normes W3C HTML/XHTML Strict (pas comme bbCode, générant des horribles balises <font> !) tout en étant plus flexible et personnalisable que le bbCode.
Seulement, j'ai un souci : ma classe fait bien ce qu'on lui demande et la partie javascript aussi (insertion de balises autour d'un texte sélectionné dans un <textarea>) sous Firefox, IE>=4, ainsi qu'Opera ... Mais pas sous Safari ! Et vu que je développe sous Mac OS X ...
J'ai ces fonctions javascript pour faire ce boulot (désolé pour les commentaires en anglais, je développe en anglais
):
Pourquoi, sous Safari, les textes contenus dans openTag et closeTag ne sont pas insérés ?
Quelle est la méthode pour insérer du texte dans un textarea avec Safari ? les forums phpBB fonctionnent bien, pourtant, sur Safari !
PS : je précise que tout mon balisage et infos associées sont stockées dans un bête fichier texte qui est parsé automatiquement lors de l'instanciation de la classe TeXtS ! Les paramètres pour javascript sont générés automatiquement aussi.
Modifié par Ladytron (16 Oct 2005 - 17:03)
En ces temps de forums, tout le monde utilise punBB, phpBB ou d'autres utilisant le célèbre bbCode.
Je développe en ce moment une classe PHP + JavaScript similaire au bbCode (que j'ai appelée TeXtS) pour un site sur lequel je travaille, mais davantage axé pour les contenus et générant du code conforme aux normes W3C HTML/XHTML Strict (pas comme bbCode, générant des horribles balises <font> !) tout en étant plus flexible et personnalisable que le bbCode.
Seulement, j'ai un souci : ma classe fait bien ce qu'on lui demande et la partie javascript aussi (insertion de balises autour d'un texte sélectionné dans un <textarea>) sous Firefox, IE>=4, ainsi qu'Opera ... Mais pas sous Safari ! Et vu que je développe sous Mac OS X ...

J'ai ces fonctions javascript pour faire ce boulot (désolé pour les commentaires en anglais, je développe en anglais

// from http://www.massless.org/mozedit/
function mozillaWrap(target,openTag,closeTag)
{
var selLength = target.textLength;
var selStart = target.selectionStart;
var selEnd = target.selectionEnd;
if(selEnd == 1 || selEnd == 2)
{
selEnd = selLength;
}
var s1 = (target.value).substring(0,selStart);
var s2 = (target.value).substring(selStart,selEnd);
var s3 = (target.value).substring(selEnd,selLength);
target.value = s1 + openTag + s2 + closeTag + s3;
return;
}
// Adds TeXtS tags to the selection
function addTextsStyle(areaId,openTag,closeTag)
{
var area = document.getElementById(areaId);
area.focus();
selText = false;
if(version >=4 && isIE && isWin) // IE/Win >= 4
{
selText = document.selection.createRange().text; // Get text selection
if(selText)
{
// add styles around selected text
document.selection.createRange().text = openTag + selText + closeTag;
area.focus();
selText = '';
return;
}
}
else if(area.selectionEnd && (area.selectionEnd - area.selectionStart > 0))
{
mozillaWrap(area,openTag,closeTag);
return;
}
storeCaret(area);
}
Pourquoi, sous Safari, les textes contenus dans openTag et closeTag ne sont pas insérés ?
Quelle est la méthode pour insérer du texte dans un textarea avec Safari ? les forums phpBB fonctionnent bien, pourtant, sur Safari !
PS : je précise que tout mon balisage et infos associées sont stockées dans un bête fichier texte qui est parsé automatiquement lors de l'instanciation de la classe TeXtS ! Les paramètres pour javascript sont générés automatiquement aussi.
Modifié par Ladytron (16 Oct 2005 - 17:03)