begin process at 2012 05 29 01:04:31
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

JavaScript et le navigateur

 > 

Problème de compatibilité

 > 

Bug javascript sous Safari (backgroundImage + onmouseout)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Bug javascript sous Safari (backgroundImage + onmouseout)

mardi 23 juin 2009 à 11:09:38 | Bug javascript sous Safari (backgroundImage + onmouseout)

Mr Z

Bonjour à tous,

Je liste en php une série de "titre+petit texte" comme ceci :
<div id="<?= 'bloc'.$i ?>" class="blocListe" onmouseover="taquet('<?= 'bloc'.$i ?>')" onmouseout="taquet('<?= 'bloc'.$i ?>')">
<div class="titre"><a href="XX"><?= $titreTab[$i] ?></a></div>
<div class="descriptif"><?= $descriptifTab[$i] ?></div>
</div>

Le CSS de blocListe : { blablabla... background-image:url(images/taquetBlanc.jpg); background-repeat:repeat-y; background-position:left; }

La fonction Javascript sur le onmouseover/onmouseout :
function taquet(idObj){
    if (!document.getElementById) return;
    var o = document.getElementById(idObj).style;
    var imgOn = "url(images/taquetRouge.jpg)";
    var imgOff = "url(images/taquetBlanc.jpg)";
    o.backgroundImage = (o.backgroundImage == imgOn) ? imgOff : imgOn;
}

Lorsque je survol ma DIV (class="blocListe") une barre verticale rouge, de la hauteur de mon bloc, apparaît calée à gauche.

Mon soucis est que tout fonctionne sur Firefox et IE,
mais sous Safari, la barre passe en rouge lors du survol,
mais ne redevient pas blanche lors du onmouseout... !?!

Je ne vois pas, mais pas du tout,  pourquoi... ?

Merci d'avance,
Z
mardi 23 juin 2009 à 12:11:18 | Re : Bug javascript sous Safari (backgroundImage + onmouseout)

kankrelune

Membre Club
Réponse acceptée !
<?= a éviter c'est grave déprécié, ne marche que si short_open_tags est actif sur le serveur et n'existera bientot plus...

<?php echo 'bloc'.$i; ?>

après faut voir... ton élément se déclenche... tu as mis un alert() dans ta fonction pour voir s'il te renvoyais quelque chose avec ton getElement... perso je pense que o doit valloir null à vérifier... essaye avec

<div id="<?php echo 'bloc'.$i; ?>" class="blocListe" onmouseover="javascript:taquet(this,true);" onmouseout="javascript:taquet(this);">

function taquet(obj,over){
    if (!obj) {
        return;
    }
    if(over) {
        obj.style.backgroundImage = "url(images/taquetRouge.jpg)";
    }
    else {
        obj.style.backgroundImage = "url(images/taquetBlanc.jpg)";
    }
}

@ tchaOo°

l'homme est un loup pour l'homme... .. .
mardi 23 juin 2009 à 13:54:02 | Re : Bug javascript sous Safari (backgroundImage + onmouseout)

Bul3

Membre Club
Réponse acceptée !
Bonjour,
avant tout, regarde d'abord le contenu de o.backgroundImage !!!
fais un alert par exemple, tu comprendra bien mieux.
Cordialement [mon Site] [M'écrire] Bul
mardi 23 juin 2009 à 15:03:36 | Re : Bug javascript sous Safari (backgroundImage + onmouseout)

Mr Z

Réponse acceptée !
Oui, j'ai déjà vérifier avec alert();.
(sous Safari) Au départ, lors du premier survol,
l'image change normalement ("url(images/taquetBlanc.jpg)" -> "url(images/taquetRouge.jpg)").
Ensuite, backgroundImage reste bloqué et l'alert renvoie toujours "url(images/taquetRouge.jpg)".

J'ai viré les <?= et remplacé par <? echo
Mais le soucis ne venait pas de là (ceci dit bon à savoir, merci)

J'ai modifié ma fonction Javascript comme cela :
function taquet(obj,over){
    if (!document.getElementById) return;
    var o = document.getElementById(obj).style;

    if(over) {
        o.backgroundImage = "url(images/taquetRouge.jpg)";
    }
    else {
        o.backgroundImage = "url(images/taquetBlanc.jpg)";
    }
}

Et là ça fonctionne sous Safari, si je n'utilise pas le this dans : onmouseover="taquet(this, true)" !
Mais : onmouseover="taquet('<?php echo 'bloc'.$i ?>', true)"

Je vois pas bien la différence ?! Si ce n'est le "over"...
Que j'utilise this + obj.style.backgroundImage
OU <?php echo 'bloc'.$i ?> + document.getElementById(obj).style.backgroundImage
Cela est la même chose. non ?

Par contre, le soucis semble plus venir du système avec le modulo :
obj.style.backgroundImage  = (obj.style.backgroundImage == imgOn) ? imgOff : imgOn;
OU o.backgroundImage = (o.backgroundImage == imgOn) ? imgOff : imgOn;
Là dans les deux cas, ça ne fonctionne pas sous Safari.

Merci à vous,

Z
mardi 23 juin 2009 à 18:21:24 | Re : Bug javascript sous Safari (backgroundImage + onmouseout)

kankrelune

Membre Club
Réponse acceptée !
pour le <?= c'était en apparté... pour le reste en fait le this correspond à l'objet courrant donc en l'occurence ta div...

function taquet(v) {
    v.maVar = "maVal";
}
<div onclick="taquet(this);"></div>

revient à faire

function taquet(v) {
    document.getElementById(v).maVar = "maVal";
}
<div id="monId" onclick="taquet('monId');"></div>

@ tchaOo°

l'homme est un loup pour l'homme... .. .
mardi 23 juin 2009 à 18:53:09 | Re : Bug javascript sous Safari (backgroundImage + onmouseout)

Mr Z

Réponse acceptée !
Ok. et bien, merci !
[Résolu] ;)

Z


Cette discussion est classée dans : javascript, backgroundimage, onmouseout, safari, blocliste


Répondre à ce message

Sujets en rapport avec ce message

JavaScript sur safari [ par Thundrax ] Hello,Je suis entrain de faire une appli web, alors évidement je suis entrain de test sur différent navigateur.J'ouvre un popup d'une fenêtre formaté Linux et javascript [ par Androus ] Bonjour à tous,Juste une petite question qui me trotte dans la tête.Est-ce que le javascript est réservé à windows et internet explorer? Je viens de t Apostrophe sous Javascript [ par xmerour ] Bonjour,Je cherche à savoir s'il existe en Javascript l'équivalent des fonctions PHP addslashes and stripslashes ?Ou bien y't-il une combine pour arri javascript qui foire [ par jofer ] salut à tousvoilà j'ai fait un petit code javascrit pour faire des alertes dasn le cadre d'une saisie. les deux alertes (avec focus) fonctionne sauf q Utiliser les fichiers Thumbs.db de Win XP dans un Javascript [ par jeanpasse ] Bonjour à tousDébutant en JavaScript, mon projet est d'utiliser les fichiers Thumbs.db de miniatures créés par Window XP dans un JavaScript/HTML. Malh comment faire pour avoir plusieur fonction en javascript [ par jovelyn ] Bonjour,j'aimerais comprendre comment on fait pour faire fonctionner (dans mon cas 2) fonction javasrcript sur une même page (html)?j'ai déjà lu :1) iteration d'un id de balise SPAN dans une fonction javascript [ par misterchabine ] bonsoir,J'ai un formulaire ds lequel j'ai des 10 balises span avec id tab+un numero (ex : tab1 tab2 tab3 ...tab10)Mes 10 span ont leur valeur display problème avec un formulaire [ par birbidouille ] Salut,je suis tout newbie en javascript et je rencontre mes premiers problèmes inexplicables:j'ai un formulairre comportant 2 menus déroulants et un b javascript et framset [ par mlelorra ] Bonjourj'ai un lien dans ma pageA qui ouvre une nouvelle fenêtre contenant un frameset composé de 2 cadresj'aimerais :- mettre dans le cadre du haut u Lecture de fichiers texte en Javascript... [ par Solo ] Il semble que la lecture de fichiers texte n'est pas possible en JavaScript...Je propose une voie à explorer pour y parvenir...Créer dans la page HTML


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,562 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales