Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Fonction replace() sur tout le texte

53 réponses
Avatar
fra-PasDeSp
Hello

Je trouve l'apostrophe typographique nettement plus classe que
l'apostrophe du clavier.

Aussi j'aimerais mettre en place un petit javascript qui me remplacerait
tous mes apostrophes moches par des apostrophes typographiques (fonction
replace() je pense) dans toute ma page web.

Qui saurait me faire ça ? (Je suis trop mauvais en javascript et ça me
fera gagner un temps fou.)
Merci d'avance.

--
Fra

10 réponses

1 2 3 4 5
Avatar
SAM
Le 10/06/15 18:54, Fra a écrit :
SAM wrote:

var b = document.getElementsByTagName('BODY')[0],
d = b.innerHTML;
b.innerHTML = d.replace(/([A-Za-zÀ-ÿ])'([A-Za-zÀ-ÿ])/g,'$1'$2');



Merci !

Ca marche plutôt pas mal.
Seule chose surprenante : si je le met en dernier script il bloque
l'exécution des autres (ceux qui doivent s'exécuter plus tard). Mais si
je le met en premier script, pas de problème.
A quoi ça pourrait être dû ?



Ja na rien comprendu !

à mon idée il faut mettre ça dans une fonction qui ne sera lancée
qu'après le complet "nourrissage" du BODY et y compris son remplissage
effectué via d'autres scripts (advertizing et autres joyeusetés)

Quels sont ces scripts ?
que veut dire "plus tard" ? Quand ?

Un indice ?
se méfier de innerHTML !!!
(qui peut +/- se mélanger avec les attributs des balises et/ou contenu
d'INPUT/champ-de-texte)



<http://stephane.moriaux.pagesperso-orange.fr/truc/innerHTML_danger>

Cordialement,
--
Stéphane Moriaux avec/with iMac-intel 27" & Mac OS X 10.6.8
Avatar
Une Bévue
Le 10/06/2015 23:58, SAM a écrit :
se méfier de innerHTML !!!
(qui peut ± se mélanger avec les attributs des balises et/ou contenu
d'INPUT/champ-de-texte)



<http://stephane.moriaux.pagesperso-orange.fr/truc/innerHTML_danger>



très lent le chargement de 7 page...
Avatar
SAM
Le 11/06/15 07:40, Une Bévue a écrit :
Le 10/06/2015 23:58, SAM a écrit :


<http://stephane.moriaux.pagesperso-orange.fr/truc/innerHTML_danger>



très lent le chargement de 7 page...



Chez moi c'est allé normalement.
Mais, et bien que je ne l'ai pas visitée depuis ... ? , elle est
peut-être en cache ?

Ha!? Ben non, le cache est désactivé.

Essaie :
<http://stephane.moriaux.pagesperso-orange.fr/truc/innerHTML_danger.fr>
ou :
<http://stephane.moriaux.pagesperso-orange.fr/truc/innerHTML_danger.fr.shtml>
à moins que :
<http://stephane.moriaux.pagesperso-orange.fr/truc/innerHTML_danger.en>
n'aille mieux ?


Cordialement,
--
Stéphane Moriaux avec/with iMac-intel 27" & Mac OS X 10.6.8
Avatar
SAM
Le 11/06/15 13:36, SAM a écrit :
Le 11/06/15 07:40, Une Bévue a écrit :
Le 10/06/2015 23:58, SAM a écrit :


<http://stephane.moriaux.pagesperso-orange.fr/truc/innerHTML_danger>



très lent le chargement de 7 page...





C'est peut-être le "BlogCounter" qui se traine ?
(un compteur de visite extérieur)




Cordialement,
--
Stéphane Moriaux avec/with iMac-intel 27" & Mac OS X 10.6.8
Avatar
fra-PasDeSp
SAM wrote:

Le 10/06/15 18:54, Fra a écrit :
> SAM wrote:
>
>> var b = document.getElementsByTagName('BODY')[0],
>> d = b.innerHTML;
>> b.innerHTML = d.replace(/([A-Za-zÀ-ÿ])'([A-Za-zÀ-ÿ])/g,'$1'$2');
>
> Merci !
>
> Ca marche plutôt pas mal.
> Seule chose surprenante : si je le met en dernier script il bloque
> l'exécution des autres (ceux qui doivent s'exécuter plus tard). Mais si
> je le met en premier script, pas de problème.
> A quoi ça pourrait être dû ?

Ja na rien comprendu !



Les fonctions javascript qui s'exécuter "à la demande" ne s'exécutaient
pas quand ce script était mis en fin de document html. (Si je le place
en premier des scripts pas de pbs.)

à mon idée il faut mettre ça dans une fonction qui ne sera lancée
qu'après le complet "nourrissage" du BODY et y compris son remplissage
effectué via d'autres scripts (advertizing et autres joyeusetés)



Y'a pas de "nourrissage" externe.

Quels sont ces scripts ?



Par exemple, ce script jquery ne marchait plus :
$('a[href^="#"]').click(function(){
var the_id = $(this).attr("href");
$('html, body').animate({
scrollTop:$(the_id).offset().top -49
}, 'slow');
return false;
});

que veut dire "plus tard" ? Quand ?



Ceux qui s'exécutent "à la demande".

Un indice ?
se méfier de innerHTML !!!
(qui peut +/- se mélanger avec les attributs des balises et/ou contenu
d'INPUT/champ-de-texte)



Bein là ça marche plutôt bien.
Je pense que le "([A-Za-zÀ-ÿ])'([A-Za-zÀ-ÿ])" a pour but de cibler que
du texte. Je ne vois pas ttrop de cas où le code du html pourrait
inclure un ' entre deux lettres.

--
Fra
Avatar
Olivier Miakinen
Le 11/06/2015 19:35, (Fra) a écrit :

Je pense que le "([A-Za-zÀ-ÿ])'([A-Za-zÀ-ÿ])" a pour but de cibler que
du texte.



Oui, sauf que ça ne fonctionnera pas dans les cas suivants :
- l'œil (le œ ne fait pas partie de la zone Latin1 [À-ÿ])
- l'&oelig;il (le & n'a pas été inclus dans la liste)
- ç'aurait (ce c-cédille est en deux caractères, comme le
font des éditeurs sur Mac, au lieu d'un seul)
- rock'n'roll (seule la première apostrophe sera changée)

Ma première proposition ne souffrait pas de ce défaut :
remplacer « '(?=[^>]*<) » par « ’ ».

Je ne vois pas ttrop de cas où le code du html pourrait
inclure un ' entre deux lettres.



Je vois un cas, mais le remplacement y serait souhaitable :
<img src="..." alt="Vue de l'Arc de Triomphe">

Là, en revanche, ma première proposition ne fonctionnera pas.
Avatar
Olivier Miakinen
Le 11/06/2015 20:13, j'&crivais :

Je pense que le "([A-Za-zÀ-ÿ])'([A-Za-zÀ-ÿ])" a pour but de cibler que
du texte.



Oui, sauf que ça ne fonctionnera pas dans les cas suivants :
- l'œil (le œ ne fait pas partie de la zone Latin1 [À-ÿ])
- l'&oelig;il (le & n'a pas été inclus dans la liste)
- ç'aurait (ce c-cédille est en deux caractères, comme le
font des éditeurs sur Mac, au lieu d'un seul)
- rock'n'roll (seule la première apostrophe sera changée)



Ni dans le cas suivant :
- l'<em>emphase</em>

Ma première proposition ne souffrait pas de ce défaut :
remplacer « '(?=[^>]*<) » par « ’ ».



Plus exactement, elle ne souffre d'*aucun* de ces défauts.

Je ne vois pas ttrop de cas où le code du html pourrait
inclure un ' entre deux lettres.



Je vois un cas, mais le remplacement y serait souhaitable :
<img src="..." alt="Vue de l'Arc de Triomphe">

Là, en revanche, ma première proposition ne fonctionnera pas.



Voilà.
Avatar
Olivier Miakinen
Le 11/06/2015 20:22, je me répondais :

Ma première proposition ne souffrait pas de ce défaut :
remplacer « '(?=[^>]*<) » par « ’ ».



Plus exactement, elle ne souffre d'*aucun* de ces défauts.



En revanche, elle impose d'une part de toujours encoder les < et >
en &lt; et &gt; quand il ne s'agit pas de balises HTML, et d'autre
part elle impose de ne pas utiliser de simple quotes dans un script
inclus « au long » dans le HTML.

En ce qui concerne ce dernier point, il suffit pour ne pas avoir
de problème de toujours placer le code JavaScript dans un ou
plusieurs fichiers externes (et jamais directement dans le HTML)
ainsi qu'il est largement recommandé dans tous les cas.

Voir par exemple :
<http://openclassrooms.com/courses/bonnes-pratiques-javascript>.
Avatar
Olivier Miakinen
Le 10/06/2015 18:54, (Fra) a écrit :

Seule chose surprenante : si je le met en dernier script il bloque
l'exécution des autres (ceux qui doivent s'exécuter plus tard). Mais si
je le met en premier script, pas de problème.



Est-ce que tes scripts sont bien dans des fichiers externes ?
S'ils ne l'étaient pas, est-ce que ça fonctionne mieux quand tu
les y mets ?
Avatar
fra-PasDeSp
Olivier Miakinen <om+ wrote:

Le 10/06/2015 18:54, (Fra) a écrit :
>
> Seule chose surprenante : si je le met en dernier script il bloque
> l'exécution des autres (ceux qui doivent s'exécuter plus tard). Mais si
> je le met en premier script, pas de problème.

Est-ce que tes scripts sont bien dans des fichiers externes ?



Non

S'ils ne l'étaient pas, est-ce que ça fonctionne mieux quand tu
les y mets ?



Je ne l'envisage pas tant ils sont courts et parceque ça marche en
mettant ce script en premier.
--
Fra
1 2 3 4 5