11548 sujets

JavaScript, DOM et API Web HTML5

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 ... Smiley bawling

J'ai ces fonctions javascript pour faire ce boulot (désolé pour les commentaires en anglais, je développe en anglais Smiley cligne ):
//	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)
chmel a écrit :
Bonjour,
La sélection de texte chez Safari c'est
window.getSelection()
Oui, ça je sais Smiley cligne Ce que je voulais savoir, c'est s'il y avait une méthode permettant, via window.getSelection(), de faire des manipulations sur cette sélection (découpage, insertion de texte, etc ...) Smiley lol Beaucoup disent que non, mais sait-on jamais !