Javascript et firefox [Résolu]

Signaler
Messages postés
20
Date d'inscription
mardi 30 septembre 2003
Statut
Membre
Dernière intervention
12 janvier 2012
-
Messages postés
20
Date d'inscription
mardi 30 septembre 2003
Statut
Membre
Dernière intervention
12 janvier 2012
-
Bonjour,

Je me permets de poster ce message parce que j'ai un soucis avec le navigateur Firefox.

Voici mon source :

<td>
----

,

,

   
</td>
...

----

,
,
,
,
,
,
,
,
,
,
,

----

<table width=\"300\" border=\"1\" class=\"cal\" id=\"cald\">
----

 Lun, Mar, Mer, Jeu, Ven, Sam, Dim,

 ----
, , , , , , ,
----
, , , , , , ,
----
, , , , , , ,
----
, , , , , , ,
----
, , , , , , ,
----
, , , , , , ,

</tr>
</table>

et voici la fonction appelée :

function displayCalendar(id)
{
    var calendar = new Calendar();

    var i;
    var element;
    for (i=0 ; i<4 ; i++)
    {
        element = document.getElementById("cal_m_0" + i);
        element.onmouseover = highlightHead;
        element.onmouseout = unhighlightHead;
    }
    for (i=0 ; i<4 ; i++)
    {
        element = document.getElementById("cal_y_0" + i);
        element.onmouseover = highlightHead;
        element.onmouseout = unhighlightHead;
    }
    element = document.getElementById("cal_c");
    element.onmouseover = highlightHead;
    element.onmouseout = unhighlightHead;

    initElement(id);
    var dateValue = calendar.element.value;
    if (dateValue != "")
    {
        var s = dateValue.split("/");
        var d;
        var m;
        var y;
        var validDate = true;
        if (s.length == 3)
        {
            d = s[0];
            if (d.charAt(0) == "0")
            {
                d = d.substr(1);
            }
            m = s[1];
            if (m.charAt(0) == "0")
            {
                m = m.substr(1);
            }
            y = s[2];
        }
        else
        {
            validDate = false;
        }

        if (validDate)
        {
            initCalendar(new Date(y, m-1, d));
        }
        else
        {
            initCalendar(new Date());
        }
    }
    else
    {
        initCalendar(new Date());
    }
    fillCalendar();
    showCalendar();
}

function showCalendar()
{
    calendar.cal.style.visibility = "visible";
    showDayChoice();
    hideMonthChoice();
    hideYearChoice();
}

Mon soucis c'est qu'avec Firefox lorsque je clique sur l'image rien ne se passe (pas meme une erreur sur la console d'erreur alors que sous MSIE 6.0 ou 7.0 cela fonctionne.

Pouvez-vous me dire ce qu'il ne va pas dans le bout de code que j'ai fourni ?

27 réponses

Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
14
est ce que le
existe dans ton document
est ce qu'il à un style ???
Messages postés
20
Date d'inscription
mardi 30 septembre 2003
Statut
Membre
Dernière intervention
12 janvier 2012

Voilà comment elle est déclarée :
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
14
j'ai trouvé ceci dans le document

que renferme cette classe au niveau du style ou de la feuille de style
Messages postés
20
Date d'inscription
mardi 30 septembre 2003
Statut
Membre
Dernière intervention
12 janvier 2012

je l'ai supprimé cette classe et je l'ai enlevé de la div et c'est pareil :(
Messages postés
20
Date d'inscription
mardi 30 septembre 2003
Statut
Membre
Dernière intervention
12 janvier 2012

Bon je viens de le remettre te voilà ce quelle contient :

.ctx                        {border-left:3px solid floralwhite; border-right:3px solid green; border-top:3px solid floralwhite; border-bottom:3px solid green;
                             position:absolute; text-align:left; font-family: Arial; font-size:10pt; width:200px; background-color:antiquewhite;
                             color: green; visibility:hidden; font-style:normal; font-variant:normal; font-weight:bold; white-space: nowrap;}
Messages postés
20
Date d'inscription
mardi 30 septembre 2003
Statut
Membre
Dernière intervention
12 janvier 2012

J'ai trouvé d'ou cela venait c'est dans la fonction suivante et c'est ce qui est en gras
function initElement(id)
{
    calendar.elementId = "";
    calendar.element = document.getElementById(id);

    var hGap = -92;
    var vGap = 12;
    var elementStyle = calendar.cal.style;
    var rightedge = document.body.clientWidth - event.clientX - hGap;
    var bottomedge = document.body.clientHeight - event.clientY - vGap;
   
    if (rightedge < calendar.cal.offsetWidth)
    {
        elementStyle.left = document.body.scrollLeft + event.clientX - hGap - calendar.cal.offsetWidth;
    }
    else
    {
        elementStyle.left = document.body.scrollLeft + event.clientX + hGap;
    }
   
    if (bottomedge < calendar.cal.offsetHeight)
    {
        elementStyle.top = document.body.scrollTop + event.clientY - vGap - calendar.cal.offsetHeight;
    }
    else
    {
        elementStyle.top = document.body.scrollTop + event.clientY + vGap;
    }

    calendar.calm.style.left = elementStyle.left;
    calendar.calm.style.top = parseInt(elementStyle.top) + 28;
    calendar.caly.style.left = parseInt(elementStyle.left) + 6;
    calendar.caly.style.top = parseInt(elementStyle.top) + 33;
}

Mais je ne sais pas comment faire pour récuperer les dimensions que j'ai besoin.
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
14
Y0 !




pas meme une erreur sur la console d'erreur


pourtant FireFox ne connaît pas event












si je saisi tous, cette fonction te permet d'avoir ton calendrier dans la fenêtre courante
dans ce cas on peut récupérer les dimensions de la fenêtre de la façon suivante...

var Fenetre = new RECT();
//-------------
function RECT(){
  this.Left   =0;
  this.Top    =0;
  this.Right  =0;
  this.Bottom =0;
}

//------------------------
function Get_DimFenetre(){
  var DocRef;
 
  with( Fenetre){
    if( window.innerWidth){
      with( window){
        Left   = pageXOffset;
        Top    = pageYOffset;
        Right  = innerWidth;
        Bottom = innerHeight;
      }
    }
    else{ // Cas Explorer à part
      if( document.documentElement && document.documentElement.clientWidth)
        DocRef = document.documentElement;
      else
        DocRef = document.body;

      with( DocRef){
        Left   = scrollLeft;
        Top    = scrollTop;
        Right  = clientWidth;
        Bottom = clientHeight;
      }
    }
    //-- limite Maxi Fenêtre Affichage
    Right  += Left;
    Bottom += Top;
  }
}







on ne fait nullement référence à event sauf éventuellement si l'on veut déplacer le camlendrier lors d'un scroll de la page, mais c'est un autre problème...

Nota :
 je fais une gestion de la fenêtre dans une source d"pos"e sur le site, peut être à voir



[code.aspx?ID =36300 INFO
BULLE TOUJOURS VISIBLE]








A suivre...
;0)
Messages postés
20
Date d'inscription
mardi 30 septembre 2003
Statut
Membre
Dernière intervention
12 janvier 2012

Excusez-moi pour le retard mais cela à fonctionner.

Maintenant, je dois fermer le sujet mais je ne sais pas comment faire ?
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
14
B
onjour...

essaies de mettre un HREF="javascript:void(0);" dans ton lien si c'est bien la ligne

[javascript:void(0);



onclick="displayCalendar('FinSejour');">]



qui te poses probléme...


;0)
Messages postés
20
Date d'inscription
mardi 30 septembre 2003
Statut
Membre
Dernière intervention
12 janvier 2012

Bonjour,

Je viens de le mettre mais cela ne change rien et en plus j'ai l'image qui est encadrer du lien :(
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
14
pour supprimer la bordure il suffit de mettre border= "0" mais le problème est ailleurs quoiqu'il arrive...
je verrais cela sur cette ligne
  calendar.cal.style.visibility = "visible";




si l'objet Calendar posséde un ID il est préférable de le référencer par
document.getElementById("cal).style.visibility = "visible";





mais la je m'avance ne connaissant pas l'Objet Calendar



;0)
Messages postés
20
Date d'inscription
mardi 30 septembre 2003
Statut
Membre
Dernière intervention
12 janvier 2012

Bonjour,

L'objet calendar est crée dans la fonction displayCalendar(id) et il sert à manipuler le calendrier via des  boutons qui se trouve dans la div.

Dont j'ai besoin de cette objet pour faire défiler les jours, les mois ou les année.
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
14
je ne parle pas dela variable


c

alendar, qui peut être un objet, mais de l'Objet


C

alendar


var calendar = new Calendar();

est ce que calendar à une ID ? mets un alert pour voir

var calendar = new Calendar();


alert( calendar.id);





;0)
Messages postés
20
Date d'inscription
mardi 30 septembre 2003
Statut
Membre
Dernière intervention
12 janvier 2012

Je viens de tester et il m'affiche undefined donc il en a pas mais au départ il n'y avait pas de var calendar = new Calendar(); mais seulement calendar = new Calendar();
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
14
essaies alert( calendar.tagName);
mais tu dois bien avoir la source dans laquelle est défini l'objet Calendar...

Nota :

calendar = new Calendar();
ou
var calendar = new Calendar();
c'est la même chose dans le 1st

le var est implicite,

mais la 2nd est préférable
Messages postés
20
Date d'inscription
mardi 30 septembre 2003
Statut
Membre
Dernière intervention
12 janvier 2012

Non je n'ai pas la source ou mais il est dans le package de java mais je ne sais pas dans quel fichier

et sinon le resultat de alert(calendar.tagname); c'est undefined
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
14
attention tagName et non tagname
...
;0)

Messages postés
20
Date d'inscription
mardi 30 septembre 2003
Statut
Membre
Dernière intervention
12 janvier 2012

J'avais fait un copier coller dans mon editeur mais pas dans ma réponse.
Messages postés
20
Date d'inscription
mardi 30 septembre 2003
Statut
Membre
Dernière intervention
12 janvier 2012

J'avais fait un copier coller dans mon editeur mais pas dans ma reponse :)
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
14
peut on savoir ou tu l'a récupéré pour essayer de ce faire une idée


;0)