Tom's Guide > Forum > Programmation > Compatibilité javascript(propriété event) sous FireFox

Compatibilité javascript(propriété event) sous FireFox

Forum Programmation : Compatibilité javascript(propriété event) sous FireFox

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Saluté tout lé monde !

J'ai un gros probleme de compatibilité. Le code suivant (qui est l'affichage d'une fenetre en suivant le pointeur de la souris).
ça marche sous IE, mais pas sous FireFox, snif snif ...


Voici mon code
ça c'est dans le head :

<style type="text/css">
.popper { POSITION: absolute; VISIBILITY: hidden; filter:alpha(opacity=90); }
</style>

et ça c'est dans mon body:

<DIV class="popper" id="topdeck">
<SCRIPT language="JavaScript">
var nava = (document.layers);
var iex = (document.all);
var skn = (nava) ? document.topdeck : topdeck.style;
if (nava) {document.captureEvents(Event.MOUSEMOVE)};
document.onmousemove = get_mouse;

function pop(msg)
{
skn.display = "block";
var content ="<TABLE WIDTH=220px height=100% BORDER=0px CELLPADDING=1px CELLSPACING=0px BGCOLOR=#000000><TR><TD><TABLE WIDTH=100% HEIGHT=100% BORDER=0px CELLPADDING=4px CELLSPACING=0px CLASS=fontzones><TR><TD valign=top style=padding-bottom=20; "+msg+"</TD></TR></TABLE></TD></TR></TABLE>";
if (nava)
{
skn.document.write(content);
skn.document.close();
skn.visibility = "visible";

}
else if (iex)
{
document.all("topdeck" ).innerHTML = content;
skn.visibility = "visible";
}
}
function get_mouse(e)
{
var x = event.x+document.body.scrollLeft;
var y = event.y+document.body.scrollTop;
skn.left = x;
skn.top = y;

}
function kill()
{
skn.visibility = "hidden";
skn.display = "block";
}
</SCRIPT>
</div>

Je sais que le probleme vient du fait que dans ma fonction get_mouse(e), j'ai
var x = event.x+document.body.scrollLeft;
var y = event.y+document.body.scrollTop;
et event n'est pas pris en charge par fire fox...


Y'a t-il un moyen de contourner ce problème ??
Merci d'avance !!!
:hello:

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

vite fait, ça doit pouvoir t'aider:

Code :
  1. function get_mouse(e) {
  2.   var scrOfX = 0, scrOfY = 0;
  3.   if (typeof(window.pageYOffset) == 'number' ) {
  4.       //Netscape compliant
  5.       scrOfY = window.pageYOffset;
  6.       scrOfX = window.pageXOffset;
  7.   } else if (document.body && (document.body.scrollLeft || document.body.scrollTop)) {
  8.       //DOM compliant
  9.       scrOfY = document.body.scrollTop;
  10.       scrOfX = document.body.scrollLeft;
  11.   } else if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
  12.       //IE6 standards compliant mode
  13.       scrOfY = document.documentElement.scrollTop;
  14.       scrOfX = document.documentElement.scrollLeft;
  15.   }
  16.   skn.style.left = eventObj.clientX + scrOfX + 'px';
  17.   skn.style.top = eventObj.clientY + scrOfY + 'px';
  18. }


Message édité par crazycat@idn le 07-09-2006 à 20:06:11
------------------------------ Réseau IRC Francophone | g33k-zone
Répondre à crazycat@idn

merci pour ta reponse plus que rapide !!!
Je check ça tout de suite...
Merci !

Répondre à moussaaaaa

Sniiiiiiiiiiiiiiiiiiiiiiiiiiiiiff !!!
ça morche po

kan j'ouvre la console javascript de google j'ai ce code d'erreur :

Avertissement : Élément référencé par son ID/NAME dans le contexte global. Utilisez la propriété standard du W3C document.getElementById() à la place.
Fichier source : http://localhost/ABC/index.php
Ligne : 33

Ma foué , je comprend pu ...

Répondre à moussaaaaa

Citation :

j'ai ce code d'erreur :

Avertissement :



T'appeles ça un message d'erreur toi ?
Si y'a marqué Avertissement, c'est que c'est pas une erreur !

Avec Firefox, il faut faire des getElementById, remplace les skn par document.getElementById('skn')


Message édité par OmaR le 07-09-2006 à 20:31:46
------------------------------ Les dessins des seins ou les desseins des saints ?
Répondre à OmaR

Et bien !
Je vois qui fo peser ces mot ici, l'erreur n'est pas permise, lool
Bon, ça ne corrige malheureusement pas mon problème,
Par contre ça m'en ajoute, vu qu'avec document.getElementById('skn')
ça ne marche plus sou ie ...
Soucis là ...

Répondre à moussaaaaa

j'ai jamais eu de soucis avec des document.getElementById() avec IE...

(Edit : en fait si je te disais ça a propos de l'avertissement, c'est qu'un avertissement n'empèche pas la bonne exécution d'un programme, alors qu'une erreur oui !)


Message édité par OmaR le 07-09-2006 à 20:40:51
------------------------------ Les dessins des seins ou les desseins des saints ?
Répondre à OmaR

pas de probleme...
Mais c cho que j'arrive pas a resoudre mon pbl...
Ya plein de code ki en parle, mais apparement ça colle pas avec mon cas ...
Ma foua ...
Si quelqu'un à une idée ...

Répondre à moussaaaaa

en fait, pourquoi tu ne travailles pas durectement sur:
skn = document.getElementById('topdeck') ?
parce que là, tu n'as pas d'élément avec l'id "skn"

------------------------------ Réseau IRC Francophone | g33k-zone
Répondre à crazycat@idn

Bonjour

J'ai le même probleme de compatibilité que vous avec event sur Firefox....

avez vous trouver une solution à ce problème???

merci

Répondre à satch62

Salut,

Firefox passe l'évènement en paramètre de la fonction.
Récupères l'évènement en ajoutant un paramètre à ta fonction, et tu pourras l'utiliser pour firefox.
Tu vérifies si event est null pour voir si c'est firefox ou ie, et tu fais en fonction.

------------------------------ Les dessins des seins ou les desseins des saints ?
Répondre à OmaR

re,

merci Omar pour lavancé du schmilblick...


ok pour le principe de la fonction,cependant je reste débutant dans le domaine,et fébrile en gestion de fonction...


voici les deux lignes ki bugge avec firefox:

mymenu.top = document.body.scrollTop + event.clientY - event.offsetY;
mymenu.left = document.body.scrollLeft + event.clientX - event.offsetX + ParentMenuWidth;

qd je vire les event.client et event.offsett,par une valeur chiffrée,le script fonctionne,cependant le placement du menu est pas forcément a l'endroit voulu selon les résolutions graphiques des postes utilisateurs.

donc si je suis bien ta proposition:
faut ke je crée une fonction ki gere si c'est Firefox ou IE par la valeur de la fonction event.?puis mettre le code ki va pour chaque Navigateur?
pour IE,je l'ai mais pour Firefox,je me sens seul o monde :)
c'est peut être abusé de ma part,mais ya til qqun, qui sache codé mes 2 lignes pour que ce soit interprété correctement sur Firefox?

merci d'avance.


Répondre à satch62

Salut,

 

Ta fonction tu l'appelles sur un évènement, on est d'accord ? Genre sur le onload de ton body, ou je sais pas, oui ?
Avec Firefox, ces évènements prennent un paramètre, avec IE il ne me semble pas.

 

Du coup, tu as ta fonction qui ressemble à ça :

Code :
  1. function gestionEvenement() {
  2. mymenu.top = document.body.scrollTop + event.clientY - event.offsetY;
  3. mymenu.left = document.body.scrollLeft + event.clientX - event.offsetX + ParentMenuWidth;
  4. }
 

Avec Firefox, il te faudrait quelque chose comme ça :

Code :
  1. function gestionEvenement(e) {
  2. if(event != null) {
  3. mymenu.top = document.body.scrollTop + event.clientY - event.offsetY;
  4. mymenu.left = document.body.scrollLeft + event.clientX - event.offsetX + ParentMenuWidth;
  5. } else {
  6. mymenu.top = document.body.scrollTop + e.clientY - e.offsetY;
  7. mymenu.left = document.body.scrollLeft + e.clientX - e.offsetX + ParentMenuWidth;
  8. }
  9. }
 

Et ça devrait le faire il me semble


Message édité par OmaR le 04-03-2009 à 16:32:38
------------------------------ Les dessins des seins ou les desseins des saints ?
Répondre à OmaR

salut OmaR,
j'étais parti dans ce sens là, ton code m'a fait gagné du temps,
ça y est ça passe sur Firefox ossi!
youpi tralala!
MERCI BEAUCOUP

Répondre à satch62
Tom's Guide > Forum > Programmation > Compatibilité javascript(propriété event) sous FireFox
Aller à :

Il y a 1041 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens