Ben au pire deja ça insererais les balises a la fin du post comme le fait yAronet pour konqueror. je sais pas si la fonction mozWrap pourrais marcher sur Safari (a tester)
edit: apriori oui safari supporte document.getSelection (ou window.getSelection). Donc le code de mozWrap devrais marcher
o, tu peut mettre dans ton premier test de la fonction "fonc" ça corrigerais le probleme, au moins pour que le fallback du pire des cas marche (a savoir prettyprint_textarea.value += a + b + c
je peut pas tester en ligne, mais thepr) mais apriori c'est mozWrap qui est pris en compte.
if ((navigator.userAgent.indexOf("Konqueror") > -1) || (navigator.userAgent.indexOf("WebKit") > -1))
edit mieux :
Voila comment améliorer fonc :
function fonc(a,b,c) {
var prettyprint_textarea = document.getElementById("textarea-equ");
if (navigator.userAgent.indexOf("Konqueror") > -1) {
if (document.getSelection) {
mozWrap(prettyprint_textarea, a, c, b);
} else
prettyprint_textarea.value += a + b + c;
} else if ((document.getSelection) || (window.getSelection)) {
mozWrap(prettyprint_textarea, a, c, b);
} else {
var strsel = document.selection.createRange().text;
if (strsel == "") str = b;
else str = strsel;
prettyprint_textarea.focus();
var sel = document.selection.createRange();
str = a + str + c
sel.text = str;
if (strsel != "") {
sel.moveStart('character', -str.length);
sel.select();
}
}
prettyprint_textarea.focus();
}
et je pige pas pourquoi IE est en fallback, ça devrait plutot etre un truc genre :
function fonc(a,b,c)
{
var prettyprint_textarea = document.getElementById("textarea-equ");
if (navigator.userAgent.indexOf("IE") > -1) // Should not work as-is
{
var strsel = document.selection.createRange().text;
if (strsel == "")
str = b;
else
str = strsel;
prettyprint_textarea.focus();
var sel = document.selection.createRange();
str = a + str + c
sel.text = str;
if (strsel != "")
{
sel.moveStart('character', -str.length);
sel.select();
}
}
else if ((document.getSelection) || (window.getSelection))
{
mozWrap(prettyprint_textarea, a, c, b);
}
else
{
prettyprint_textarea.value += a + b + c;
}
prettyprint_textarea.focus();
}