Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : PB affichage infobulle non correct sur IE [ CSS / Général ] (flophp)

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é 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...

CalendriCode

Novembre 2008
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,406 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.