begin process at 2012 05 29 20:32:43
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Javascript

 > 

Archives

 > 

AU SECOURS !!!

 > 

Probleme affichage infobulle calendrier avec IE mais pas avec firefox


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

Probleme affichage infobulle calendrier avec IE mais pas avec firefox

dimanche 12 mars 2006 à 15:07:47 | Probleme affichage infobulle calendrier avec IE mais pas avec firefox

ishanshade

Bonjour à tous
Je fais un site internet pour la FAC sur un sujet bien précis : les mangas
Pour ce site,j'ai voulu incorporer un calendrier avec infobulle apparaissant lorsque le curseur passe sur la data contenant un évènement.

J'ai donc chopé un petit module sur le net que j'ai très vite installé.

Voila ce que ca donne [url=http://dbzishan40.free.fr/v1/. Pour les utilisateurs de Firefox, ils verront le calendrier marcher parfaitement. Pour ceux qui utilisent IE, pas d'infobulles ! Voici l'erreur que donne IE :
'document.all.infobulle.style' a la valeur Null ou n'est pas un objet. (aux lignes 30 et 60, d'apres IE en gras ici)

[code]var ie = (document.all)? true:false;
var ns4 = (document.layers)? true:false;
var ns6 = (document.getElementById)? true:false;
var IB=new Object;
var posX=0;
var posY=0;
var xOffset=20;
var yOffset=20;

function AffBulle(titre, texte, w, color1, color2)
{
    //contenu="<div style=\"border: 1px solid #7f9db9; background: "+IB.ColContour+"; position: absolute; z-index: auto; display: block;\">"+titre+"</div>";IB.ColContourIB.ColFond
    //IB.ColContour
    contenu="<table width='"+w+"' cellspacing='0' cellpadding='"+IB.NbPixel+"' style=\"border: 1px solid "+color2+";\"><tr style='background: "+color1+";'><td> <b>"+titre+"</b></td></tr><tr style='background: "+color1+";'><td valign='top'><table style='width:100%; background: white;' cellpadding='3' cellspacing='0'><tr><td style=\"border: 1px solid "+color2+";\">"+texte+"</td></tr></table></td></tr></table> ";
    var finalPosX=posX-xOffset;
    if (finalPosX<0) finalPosX=0;
    
    if (ns4)
    {
    document.layers["infobulle"].document.write(contenu);
    document.layers["infobulle"].document.close();
    document.layers["infobulle"].top=posY+yOffset+"px";
    document.layers["infobulle"].left=finalPosX+"px";
    document.layers["infobulle"].visibility="show";
    }
    if (ie)
    {
    infobulle.innerHTML=contenu;
    document.all["infobulle"].style.top=posY+yOffset+"px";
    [b]document.all["infobulle"].style.left=finalPosX+"px";[/b]
    document.all["infobulle"].style.visibility="visible";
    }
    else if (ns6)
    {
    document.getElementById("infobulle").innerHTML=contenu;
    document.getElementById("infobulle").style.top=posY+yOffset+"px";
    document.getElementById("infobulle").style.left=finalPosX+"px";
    document.getElementById("infobulle").style.visibility="visible";
    }
}

function getMousePos(e)
{
    if (ie)
    {
      posX=event.x+document.documentElement.scrollLeft;
      posY=event.y+document.documentElement.scrollTop;
    }
    else
    {
      posX=e.pageX;
      posY=e.pageY;
    }
}

function HideBulle()
{
    if (ns4) {document.layers["infobulle"].visibility="hide";}
    if (ie) {document.all["infobulle"].style.visibility="hidden";}
    [b]else if (ns6){document.getElementById("infobulle").style.visibility="hidden";}[/b]
}

function InitBulle(ColFond, ColContour, NbPixel)
{
    IB.ColFond=ColFond;IB.ColContour=ColContour;IB.NbPixel=NbPixel;
    if (ns4)
    {
        document.write("<layer name='infobulle' top='0' left='0' visibility='hide'></layer>");
        window.captureEvents(Event.MOUSEMOVE);window.onMouseMove=getMousePos;
    }
    if (ie)
    {
        document.write("<div id='infobulle' style='position:absolute;top:0;left:0;visibility:hidden'></div>");
        document.onmousemove=getMousePos;
    }
    //modif CL 09/2001 - NS6 : celui-ci ne supporte plus document.layers mais document.getElementById
    else if (ns6)
    {
            document.write("<div id='infobulle' style='position:absolute;top:0;left:0;visibility:hidden;'></div>");
            document.onmousemove=getMousePos;
    }

}[/code]

Pourtant, le plus curieux, c'est que sur la page [url=http://dbzishan40.free.fr/v1/test/ (page appellée sur ma page v1/index.php grâce à la fonction include) avec Firefox ou IE, tout marche parfaitement.

Quelqu'un peut-il m'aider ?

Merci d'avance
lundi 13 mars 2006 à 10:33:06 | Re : Probleme affichage infobulle calendrier avec IE mais pas avec firefox

roro06



Bonjour

Sans trop trop fouiller dans ton code, Je te donnerais simplement 2 conseils :
1 - "
    document.getElementById("infobulle").innerHTML=contenu;
    document.getElementById("infobulle").style.top=posY+yOffset+"px";
    document.getElementById("infobulle").style.left=finalPosX+"px";
    document.getElementById("infobulle").style.visibility="visible";    IE est capable d'interpreter cela. Donc : Inutile de tester le navigateur (distingo entre IE et NS6)
En fait, j'ai tendance à déconseiller l'utilisation de l'objet all.D'ailleurs, je ne l'ai jamais utilisé.

2 - NS4 est encore utilisé quelquepart dans l'Univers ? J'ose croire qu'il a été éradiqué du Cosmos et qu'on en entendra plus parler .

En fait, ici, tu n'as à faire une détection de navigateur uniquement pour ta fonction getMousePos() qui doit pouvoir se simplifier en :
function getMousePos(e)
{
      posX=(document.all)?event.x+document.documentElement.scrollLeft : e.pageX;
      posY=(document.all)?event.y+document.documentElement.scrollTop : e.pageY;
}

J'insiste, l'utilisation de l'objet all devrait être interdite (j'ai déjà du le dire, ça) sauf peut-etre pour de l'Intranet, quand à ns4, tu t'embete peut-etre pour pas grand chose. Un browser, c'est téléchargeable gratuitement.
Mais c'est un avis personnel.


Cordialement
Roro webDev
mardi 14 mars 2006 à 19:51:35 | Re : Probleme affichage infobulle calendrier avec IE mais pas avec firefox

ishanshade

Merci pour ta proposition, mais en fait la fonction getmousepos n'a pas l'air de poser problème. J'ai quand même essayé de remplacer par ton nouveau code, et le problème n'est pas réglé

En fait, IE me dit que ces deux lignes là sont problématiques :

document.all["infobulle"].style.left=finalPosX+"px";
et
document.write("<layer name='infobulle' top='0' left='0' visibility='hide'></layer>");

Je rappelle que mon problème principal, est le fait que l'infobulle ne s'affiche pas sur IE seulement sur ma page index.php principale ! En gros, c'est l'include qui provoque ce non-affichage !
Pourquoi ? Je ne saurais pas dire !
mardi 14 mars 2006 à 19:53:34 | Re : Probleme affichage infobulle calendrier avec IE mais pas avec firefox

ishanshade

je me suis trompé pour la deuxieme ligne, c'est plutot celle ci que IE affiche comme erreur :
else if (ns6){document.getElementById("infobulle").style.visibility="hidden";} (au lieu de document.write("<layer name='infobulle' top='0' left='0' visibility='hide'></layer>");



Cette discussion est classée dans : style, ie, var, document, infobulle


Répondre à ce message

Sujets en rapport avec ce message

Dimension d'un div de façon dynamique [ par hawks_ttf ] Bonjour tout le mondeJe cherche le moyen d'avoir dynamiquement les dimensions d'un div...J'ai essayé document.getElementbyID(IDdiv).offsetWidth et .of Décalage Infobulle sur IE [ par jeanmarc1234 ] Bonjour,Avant toute chose je code en aspx mais j'ai du récupérer un script qui permet de charger une image dans un infobulle.Sur Mozilla aucun souci l Pb avec IE [ par Thiman ] j'ai mis ce script d'info-bulle, trouver sur internet. Il fonctionne parfaitement sur Firefox et Opéra mais problème avec IE. Pourriez-vous me venir e remettre des input radio à vide [ par joujma5 ] bonjour j'ai un bout de code qui me gène je veux bien remettre les input radio vides(!=checked) on rafraîchissant la page web.voici le code: funct Aide pour faire une boucle [ par nel_sim ] Bonjour ! Je débute en Javascript, c'est pour cela que j'ai besoin de vous ! En fait j'aimerai faire une boucle avec for ou while, mais je ne sais pa Deux javascripts identique dans une même page [ par guerrilleur ] Voila je voudrai avoir de fois le même javascript sur ma page. voici mon code actuel: [code=html] --> /*************** Problème de cookie [ par molko13 ] Bonsoir à tous,Cela fait plusieurs jours que je me casse les dents sur la gestion d'un cookie qui serait à terme utilisé pour gérer l'affichage ou de Message à l'envoi d'un formulaire, oui mais avec un GIF ? [ par porciner ] Bonjour à tous,J'ai fais une petite fonction qui permet d'afficher un message d'attente lorsque l'utilisateur envoie un formulaire.function uploadProg 2 menuS deroulants java dans une page [ par DEVLYNE ] Bonjour!Sachez que je suis uns très grande débutante mais j'ai un petit souci.J'utilise un logiciel gratuit: Coffee Cup DHTML menu pour faire mes menu


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

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 : 5,054 sec (3)

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