Problème de compatibilité script sous IE

Fermé
bibi_arnaud Messages postés 4 Date d'inscription jeudi 26 juin 2008 Statut Membre Dernière intervention 28 juillet 2008 - 28 juil. 2008 à 09:39
bibi_arnaud Messages postés 4 Date d'inscription jeudi 26 juin 2008 Statut Membre Dernière intervention 28 juillet 2008 - 28 juil. 2008 à 13:41
Bonjour à tous,

voilà mon problème.

J'ai un script qui m'affiche un système de news défilante sur la page d'accueil du site.
Ces news, elles sont importés à partir de la base de données et insérées dynamiquement dans le script.
Ce script mélange le php et le javascript.

J'ai testé ce script et il fonctionne impeccablement sous Mozilla Firefox.
Par contre quand je le teste sous IE, comme d'habitude, ça ne fonctionne pas.

J'ai beau chercher je ne sais pas de quoi ça vient.

Je vous montre déjà le code :

<div id="div_contenu_index">

<script language="javascript" type="text/javascript" src="scripts/add_load.js"></script>
<script language="javascript" type="text/javascript" src="scripts/imageslide_accueil.js"></script­>
<script language="javascript" type="text/javascript" src="scripts/slide.js"></script>


<div id="info_accueil">
<div class="titre">
Toute l'équipe de ******** vous souhaite<br/> la bienvenue sur son site
</div>
<div id="contenu_accueil">
<b>******** en quelques mots....</b><br/><br/>
<b>Année de création :</b> 2004<br/>
<b>Effectif :</b> 2 graphistes<br/>
1 conseiller / commercial / graphiste<br/>
1 spécialiste du marquage<br/><br/>

<b>RÉFÉRENCES :</b>
<span id="reference_accueil">ICI SE TROUVENT DES REFERENCES CLIENTS !
</span>

</div>
</div>

<div id="actu_accueil">
<script language="javascript" type="text/javascript">
ejs_scroll_largeur = 265;
ejs_scroll_hauteur = 142;
ejs_scroll_bgcolor = '#FFFFFF';
/* Mettre ici le chemin de l'image de fond */
ejs_scroll_background = "";
/* Mettre ici le temps en secondes */
ejs_scroll_pause_seconde = 10;

function d(texte)
{
document.write(texte);
}

ejs_scroll_message = new Array;




d('<DIV ID=ejs_scroll_relativ STYLE="position:relative;width:'+ejs_scroll_largeur+';h­eight:'+ejs_scroll_hauteur+';background-color:'+ejs_scroll_b­gcolor+';background-image:url('+ejs_scroll_background+')&quo­t;>');
d('<DIV ID=ejs_scroll_cadre STYLE="position:absolute;width:'+(ejs_scroll_largeur-8)­+';height:'+(ejs_scroll_hauteur-8)+';top:4;left:4;clip:rect(­0 '+(ejs_scroll_largeur-8)+' '+(ejs_scroll_hauteur-8)+' 0)">');

<?php
$db = db_connect();
db_database();

$query = "SELECT * FROM krea_news";

$req = mysql_query($query)or die('erreur');

$nb_ligne = mysql_num_rows($req);

$id_mess = $nb_ligne-1;

for ($i=0; $i<=$id_mess; $i++)

{
$row = mysql_fetch_row($req);

$titre[$i] = $row[1];
$message[$i] = $row[2];
$lien[$i] = $row[3];
$photo[$i] = $row[4];


$mess[$i]=str_replace(array("\r\n", "\n", "\r" ), "<br />", $message[$i]);

?>
ejs_scroll_message[<?php echo $i;?>]=<?php echo '<a href="'.$lien[$i].'" target="blank" class="lien_actu"><b><i>'.$titre[$i­].'</i></b><br/><br/>'.$mess[$i].'&l­t;br/></a>';?>;

<?php
if($i==0)
{
?>

d('<div id=ejs_scroller_1 style="position:absolute;width:'+(ejs_scroll_largeur-8)­+';left:0;top:0;" CLASS=ejs_scroll>'+ejs_scroll_message[<?php echo $i?>]+'</DIV>');

<?php
}
else
{
?>
d('<div id=ejs_scroller_2 style="position:absolute;width:'+(ejs_scroll_largeur-8)­+';left:0;top:'+ejs_scroll_hauteur+';" CLASS=ejs_scroll>'+ejs_scroll_message[<?php echo $i;?>]+'</DIV>');
<?php
}
}
?>

d('</DIV></DIV>');

ejs_scroll_mode =1;
ejs_scroll_actuel = 0;

function ejs_scroll_start()
{
if(ejs_scroll_mode == 1)
{
ejs_scroller_haut = "ejs_scroller_1";
ejs_scroller_bas = "ejs_scroller_2";
ejs_scroll_mode = 0;
}
else
{
ejs_scroller_bas = "ejs_scroller_1";
ejs_scroller_haut = "ejs_scroller_2";
ejs_scroll_mode = 1;
}
ejs_scroll_nb_message = ejs_scroll_message.length-1;
if(ejs_scroll_actuel == ejs_scroll_nb_message)
ejs_scroll_suivant = 0;
else
ejs_scroll_suivant = ejs_scroll_actuel+1;
if(document.getElementById)
document.getElementById(ejs_scroller_bas).innerHTML = ejs_scroll_message[ejs_scroll_suivant];
ejs_scroll_top = 0;
if(document.getElementById)
setTimeout("ejs_scroll_action()",ejs_scroll_p­ause_seconde*1000)
}

function ejs_scroll_action()
{
ejs_scroll_top -= 1;
document.getElementById(ejs_scroller_haut).style.top = ejs_scroll_top;
document.getElementById(ejs_scroller_bas).style.top = ejs_scroll_top+ejs_scroll_hauteur;
if((ejs_scroll_top+ejs_scroll_hauteur) > 0)
setTimeout("ejs_scroll_action()",10)
else
ejs_scroll_stop()
}

function ejs_scroll_stop()
{
ejs_scroll_actuel = ejs_scroll_suivant;
ejs_scroll_start()
}

addLoadEvent(ejs_scroll_start);
</script>
</div>
</div>



Une des news est la suivante :

[i]Horaires d'ouverture

L'agence est ouverte :

du lundi au vendredi
de 8h30 à 12h00 et de 13h30 à 18h00./i


Je me pose la question si ce ne serait peut être pas les simple quotes de D'OUVERTURE et de L'AGENCE qui créeraient peut être des problèmes de syntaxe.
Actuellement il n'y a que cette news dans la base de données.

Voilà un petit où vous pouvez voir la page en question : http://­www.s247096133.onlinehome.fr

Merci d'avance.

Arnaud S.
A voir également:

2 réponses

bibi_arnaud Messages postés 4 Date d'inscription jeudi 26 juin 2008 Statut Membre Dernière intervention 28 juillet 2008
28 juil. 2008 à 11:31
le lien que je vous ai fourni n'est pas le bon, je viens de m'en rendre compte.
voila le bon lien http://www.s245310343.onlinehome.fr

Merci
0
bibi_arnaud Messages postés 4 Date d'inscription jeudi 26 juin 2008 Statut Membre Dernière intervention 28 juillet 2008
28 juil. 2008 à 13:41
Problème Résolu !!

la problème venait de cette ligne. Il manquait une paire de simples quotes.

Voilà la ligne qui était bugée :

ejs_scroll_message[<?php echo $i;?>]=<?php echo '<a href="'.$lien[$i].'" target="blank" class="lien_actu"><b><i>'.$titre[$i].'</i></b><br/><br/>'.$mess[$i].'<br/></a>';?>;



et que j'ai donc du remplacer par

ejs_scroll_message[<?php echo $i;?>]='<?php echo '<a href="'.$lien[$i].'" target="_blank" class="lien_actu"><b><i>'.$titre[$i].'</i></b><br/><br/>'.$mess[$i].'<br/></a>';?>';




Mais après changement de la ligne il restait un problème car la news qui s'affichait sous FF et pas sous IE ne s'affichait à présent ni sous IE ni sous FF.
En regardant le message d'erreur de IE (au moins une chose qu'il fait correctement ... happy.gif), il me disait qu'il qu'un point virgule était attendu. C'est là que j'ai vu qu'il y avait de nouveau le problème avec les simples quotes du message qui fermaient les simples quotes de la syntaxe.
J'ai donc rajouté ces 2 lignes afin de remplacer les simples quotes du message et du titre par \' afin que les messages n'interfèrent pas avec la syntaxe.
Voila donc les 2 lignes que j'ai rajouté :

$mess2[$i]=str_replace("'" , "\'", $mess[$i]);
$titre2[$i]=str_replace("'" , "\'", $titre[$i]);



Et tout marche nickel maintenant.
0