Réécrire ma fonction textshadow avec une méthode plus conventionnelle
Bonjour a tous
dans l'optique de faire des fonctions durable avec le moins de bug possible je repasse des fonctions qui fonctionne mais qui sont digne de l'homme de cromanion
pour commencer on va reprendre la fonction shadowcolor qui est sensée mettre une ombre flou au texte sélectionné ou l'enlever
de plus je voudrais bien remplacer les balises font qui n'ont plus d'attributs par leur innerhtml car en tant qu'enfant elle hérite de toute façon du parent donc je ne vois pas l’intérêt de garder un code dur genre "<font>truc</font><font>machin</font>"
de plus je voudrais que si MOD=false ca n’insère pas une balise mais le innerhtml résultant du nettoyage
ps:::: attention les balise peuvent avoir d'autre propriété de style comme color backcolor etc..... et ca on le garde et donc la balise aussi
des idées????
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
function selectionne_text() {
return window.getSelection().getRangeAt(0);
}
function shadowcolor(coul, MOD) { if (selectionne_text()) {
var selection = selectionne_text();
var selectedText = selection.extractContents();
var balisefont = document.createElement("FONT");
balisefont.appendChild(selectedText);
var colhtml = balisefont.getElementsByTagName("FONT");
if (colhtml.length > 0) {
for (var i = 0; i < colhtml.length; i++) {
if (colhtml[i].className = "shado") {
colhtml[i].style.textShadow = "none";
colhtml[i].className = "";
}
}
}
var str = balisefont.innerHTML;
for (var e = 0; e < 10; e++) {
str = str.replace(" style=\"text-shadow: none;\"", "");
str = str.replace("text-shadow: none;", "");
str = str.replace("style=\"\"", "");
str = str.replace("</font><font>", "")
}
balisefont.innerHTML = str
if (MOD == true) {
balisefont.style.textShadow = "0px 0px 10px " + coul;
}
selection.insertNode(balisefont);
} // FIN DE IF selectionne_text
} //fin de fonction shado |
re jy comprends plus rien
alors la je n 'y comprends rien
j'ai tout essayer sauf le marteau sur le PC ya pas moyen de faire le replace
j'ai bloquer tout le reste de la fonction pour qu'elle s'arrete au message
dans ce message je devrait avoir les font"shado" remplacer par leur innerhtml dans la variable str ca le fait pas je ne sais pas pour quoi
le code html est celui ci
Code:
1 2 3
| <p align="center">
<font size="7"><font class="shado"style="text-shadow: 0px 0px 10px #ff0000;">EXEMPLE</font> <font class="shado"style="text-shadow: 0px 0px 10px #00ffff;">DE</font> <font class="shado" style="text-shadow: 0px 0px 10px #00ff00;">TEXTE</font></font> </p><p align="center"><br></p><p align="center"><br></p><p align="center">FYTRTRTRTRTRTRTRTRTRTRTRTRT</p> |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| function shadowcolor(coul, MOD) {
if (selectionne_text()) {
var selection = selectionne_text();
var selectedText = selection.extractContents();
var balisefont = document.createElement("FONT");balisefont.className="shado";
balisefont.appendChild(selectedText);
var str=balisefont.innerHTML;
var colhtml = balisefont.getElementsByTagName("FONT");
if (colhtml.length > 0) {
for (var i = 0; i < colhtml.length; i++) {
if (colhtml[i].className = "shado") {
colhtml[i].style.textShadow = "";
if( colhtml[i].getAttribute("style")==""){str=str.replace(colhtml[i].outerHTML,colhtml[i].innerHTML);}
}
}
}
balisefont.innerHTML=str;
alert ("etape suppression des attribut et style passé :" +balisefont.innerHTML);
// if (MOD == true) { balisefont.style.textShadow = "0px 0px 10px " + coul; }
//selection.insertNode(balisefont);
// if (balisefont.parentElement.style.textShadow !="undefined" && MOD==false && balisefont.parentElement.tagName!="P"){balisefont.style.textShadow = "none";}
//alert(balisefont.parentElement.outerHTML);
} // FIN DE IF selectionne_text
} //fin de fonction shado |
plus j'essaie de faire bien moins ca marche :ptdr: