Aller au contenu

Problème de compatibilité script IE


Sujets conseillés

Posté (modifié)

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 :

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+';height:'+ejs_scroll_hauteur+';background-color:'+ejs_scroll_bgcolor+';background-image:url('+ejs_scroll_background+')">');

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].'<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_pause_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 :

Horaires d'ouverture

L'agence est ouverte :

du lundi au vendredi

de 8h30 à 12h00 et de 13h30 à 18h00.

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.

Modifié par bibi-arnaud
Posté

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 ... ^^), 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.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...