diff --git a/ecrire/inc/texte.php b/ecrire/inc/texte.php
index 4af04e725e33f246762c441a2c217a941e5b06cb..e0d10a7280ddb068b8c96daa4d5bc76a0fabf9af 100644
--- a/ecrire/inc/texte.php
+++ b/ecrire/inc/texte.php
@@ -386,6 +386,15 @@ function echappe_js($t,$class='') {
 			$t);
 	return $t;
 }
+function protege_js_modeles($t) {
+	if (isset($GLOBALS['auteur_session']['alea_actuel'])){
+		$a = $GLOBALS['auteur_session']['alea_actuel'];
+		if (preg_match_all(',<script.*?($|</script.),isS', $t, $r, PREG_SET_ORDER))
+			foreach ($r as $regs)
+				$t = str_replace($regs[0],code_echappement($regs[0],'javascript'.$a),$t);
+	}
+	return $t;
+}
 
 // Securite : empecher l'execution de code PHP, en le transformant en joli code
 // http://doc.spip.org/@interdire_scripts
@@ -1079,6 +1088,7 @@ function traiter_modeles($texte, $doublons=false, $echap='') {
 
 				// le remplacer dans le texte
 				if ($modele !== false) {
+					$modele = protege_js_modeles($modele);
 					$rempl = code_echappement($modele, $echap);
 					$texte = substr($texte, 0, $a)
 						. $rempl
@@ -1512,6 +1522,10 @@ function propre($letexte) {
 	if (!_DIR_RESTREINT)
 		$letexte = interdire_scripts($letexte);
 
+	// Reinserer le javascript de confiance (venant des modeles)
+	if (isset($GLOBALS['auteur_session']['alea_actuel']))
+		$letexte = echappe_retour($letexte,"javascript".$GLOBALS['auteur_session']['alea_actuel']);
+
 	return $letexte;
 }