begin process at 2010 03 21 07:27:02
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

CSS

 > 

Général

 > 

PB affichage infobulle non correct sur IE


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

PB affichage infobulle non correct sur IE

lundi 6 octobre 2008 à 00:39:45 | PB affichage infobulle non correct sur IE

flophp

Bonjour, je souhaite créer une infobulle au passage de la souris sur une image.
Sur Firefox le resultat est OK, une div se crée à coté de l'image avec ses caracteristiques et son texte.
Par contre sous IE, seul le texte apparait en dehors de mon body (la div avec sa taille, border, color n'apparaissent pas)

j'appelle dans mon fichier php le javascript comme ceci:
 - startAideLigne fait apparaitre la bulle
 - aideLigne fait un suivi de la souris
 - stopAideLigne enleve la bulle
<div id="installNameBase" name="installNameBase" style="float:left";
                    <img src="../image/icon/ampoule.png"
                                            onMouseOver="startAideLigne(event,this);"
                                            onMouseMove="aideLigne(event);"
                                             onMouseOut="stopAideLigne();"/>
</div>
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ensuite dans monfichier js
function getEl(id) {
    return document.getElementById(id);
}

var valX;
var valY;
var ecartX;
var ecartY;
var draging = false;
var monElAide = null;

function getMouse(e)                               // fonction pour récuperer les coordonées du curseur
    {
        valX = e.clientX;
        valY = e.clientY;
    }
   
function startAideLigne(e,el) {               // affiche la bulle d'aide
    var monDiv = document.createElement('DIV');
    var nom = el.getAttribute('id');
    var body = document.getElementsByTagName('BODY')[0];
    draging = true;
    monDiv.setAttribute('style', 'position:absolute; width:200px; border:solid 1px black; background-color:yellow;');
    monDiv.setAttribute('id', 'aide' + nom);
    monDiv.innerHTML = appelAide(nom);            //appelAide() renvoie le contenu de la bulle
    body.appendChild(monDiv);
    getMouse(e);
    monDiv.style.top = valY - parseInt(monDiv.offsetHeight) - 5 + "px";
    monDiv.style.left = valX + 5 + "px";
    ecartY = valY - parseInt(monDiv.offsetTop);
    ecartX = valX - parseInt(monDiv.offsetLeft);
    monElAide = monDiv;
}
   
function aideLigne(e) {                     // pour gérer le déplacement de la bulle d'aide par rapport au curser
    var valX2=0;
    var body = document.getElementsByTagName('BODY')[0];
    if(draging == true)
    {
        getMouse(e);
        if(valX>(parseInt(body.offsetWidth)-parseInt(monElAide.offsetWidth))){
            valX2 = valX - parseInt(monElAide.offsetWidth) - 10;
        }
        else{
            valX2 = valX;
        }
        monElAide.style.left = valX2 - ecartX + "px";
        monElAide.style.top  = valY - ecartY + "px";
    }
}
   
function stopAideLigne() {                   // pour enlever la bulle d'aide
    draging = false;
    monElAide.parentNode.removeChild(monElAide);
}

Voilà, j'espere avoir été clair dans mon soucis d'affichage IE.
Merci d'avance pour vos reponses.
lundi 6 octobre 2008 à 09:32:01 | Re : PB affichage infobulle non correct sur IE

bultez

Membre Club

bonjour,

ben déjà ta fonction getMouse ne fonctionnera pas avec IE.

   if (ie)     {
                   event.x+document.body.scrollLeft;
                   event.y+document.body.scrollTop;
                }
    else        {
                   e.pageX;
                   e.pageY;
                }

pas regardé plus loin...   il en reste peut-être des incompatibilités !
le debogage + rechercher dans la doc t'aidera
FireFox
regarder la "console d'erreurs"
Outils / Console d'erreurs
et mieux : télécharger FireBug
Internet
Explorer
activer le deboggage : Outils/options Internet/Avancés
dans la liste, sous "Navigation" : décocher
o Afficher une notification de chaque erreur de script
o Désactiver le débogage de Scripts (Internet Explorer)
et mieux : télécharger le Debogger IE
voir aussi : DebugBar et Companion JS
K-Meleon
regarder la "console d'erreurs"
Outils / Console d'erreurs
Opera
regarder la "console d'erreurs"
Outils / Avancé / Console d'erreurs
Safari
regarder Debug / Show JavaScript Console
° modifier Fichier Preferences.plist situé dans le
répertoire : Support:\Documents and Settings\utilisateur
\Application Data\Apple Computer\Safari\
y ajouter <key>IncludeDebugMenu</key>
<true/>



Cordialement

Bul[mon Site][M'écrire]

lundi 6 octobre 2008 à 21:08:03 | Re : PB affichage infobulle non correct sur IE

flophp

Bonjour et merci Bultez pour ta réponse, je l'ai bien integré par :

function getMouse(e) {                // fonction pour récuperer les coordonées du curseur
    if(navigator.appName=="Microsoft Internet Explorer"){
        valX = event.x + document.body.scrollLeft;
        valY = event.y + document.body.scrollTop;
    }
    else {
        valX = e.clientX;
        valY = e.clientY;
    }
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////

Mais celà n'a pas resolu le probleme de monDiv qui ne trouve pas ses attributs de style, et j'ai trouvé qu'il y avait une difference entre FF et IE au niveau des setAttribute('style','.........')
En effet ceci fonctionne sous FF:
monDiv.setAttribute('style', 'position:absolute; width:200px; background-color:yellow; border:solid 1px black;');

par contre sous IE non, il faut passer par :
monDiv.style.setAttribute("cssText","position:absolute; width:200px; background-color:yellow; border:solid 1px black;");

Donc il faut refaire un test du navigateur comme pour getMouse()
Voilà en esperant que cela puisse servir à quelqu'un d'autre

J'ai fais d'autre modifs entre temps sur ce code, si vous souhaitez une info hesitez pas.

Merci ++

mardi 7 octobre 2008 à 10:23:19 | Re : PB affichage infobulle non correct sur IE

bultez

Membre Club
Réponse acceptée !

>>il y avait une difference entre FF et IE au niveau des setAttribute
y'a pas qu'là, mais là aussi ;o)
je te disais : pas regardé plus loin...   il en reste peut-être des incompatibilités !
( c'était loin d'être une supputation )

maintenant, perso, j'évite les set | get Attribute

monDiv.style.???=valeur
ou, comme dans ton cas, monDiv.className=


Bul[mon Site][M'écrire]



Cette discussion est classée dans : var, body, valx, mondiv, monelaide


Répondre à ce message

Sujets en rapport avec ce message

modifié neige en hiver [ par vollibre ] Bonjour à tousVoila j'ai decidé de mettre un peut les mains dans le cambuit :)et déja j'ai un petit soucis qui je pense dois etre tres simple a regler Sous menu [ par jeff_the_lifeguard ] J'aimerai savoir comment pourrais-je faire pour ajouter un sous menu à un menu clique droit. Voice le code#menu{position:absolute;width:155px;border:3 Evènement onResize [ par initnocsib ] Je souhaite afficher plus ou moins de photos dans un bandeau en fonction de la taille de la fenêtre. voici le code : if (document.body) { var larg = pb menu click droit [ par sdisp ] Bonjour, Je souhaite faire un menu qui apparaisse lors que l'on fait un click droit sur un lien et qui remplace le menu habituel. J'ai récupéré un cod equivalent document.body ?? [ par Kangourou_Nomade ] j'essai de rentre un tableau d'éléments HTML tel que : var MyHTMLTab = document.body.childNodes ou var MyHTMLTab = document.getElementsByTagName("body Gros Pbm Netscape 4.78 !!! [ par guiguimac ] Bonjour,oh surprise ... je croyais avoir utilisé que des trucs simples dans mon script, mais en fait on dirait que ca marche pas ... avec Netscape 4.7 Cohabitation entre 2 codes impossible (compte à rebours+neige) [ par Aggshkn ] Bonjour,Je souhaite mettre dans une même page deux codes javascipt : un compte à rebours jusqu' au début de l' année 2006 (http://www.editeurjavascrip heure en temps réel [ par Mezixx ] Bonjour,comment modifier ce srcipt (et pas en mettre un autre) pour qu'il m'affiche l'heure en temps réel. var ladate=new Date(); var d=ladate.getDay( j'ai un problème de permission et je suis vraiment bloqué [ par hanamichiforce ] "Permission refusée" Je ne sais pas pourquoi, mais ca blok sur le serveur? Voici mon code : var ShellWindows = document.getElemen mes div ne font pas ce que je leurs dis !#? sale gosses :) [ par frvfrvfrvfrv ] voici a quoi resemble mon script :une partie est ok...... grace a vous tous...... MERCI !donc: html


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
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,530 sec (4)

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