begin process at 2012 05 29 10:12:14
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

JavaScript Orienté objet (POO)

 > 

Classes

 > 

incompatibilité d'un script ( IE Vs Safari)


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

incompatibilité d'un script ( IE Vs Safari)

jeudi 31 mai 2007 à 14:15:49 | incompatibilité d'un script ( IE Vs Safari)

advisory

Voila j'ai telecharger un menu ici meme et il fonctionne tres bien mais dans le parc ou je suis il y a 3 empecheur de tourner en rond :) des macs et donc sur safari tout nes'effectue pas,

je m'explique j'ai un menu horizontal a multi-niveaux et sous safari un seul des onglet defile :S

voici le script quelqu'un peut peut-etre me dire comment l'adapter pour qu'il fonctionne en meme temps sur safari et sur IE

var l=document.getElementById("Menu").getElementsByTagName('LI');
 for ( var n=0; n<l.length; n++ )
 {
  l[n].unselectable="on"; // pour faire plus propre : "non sélectionnable", ne fonctionne pas avec FF ?
  if ( l[n].getElementsByTagName('UL') && l[n].getElementsByTagName('UL').length>0 )
    {
     l[n].onmouseover = function()
       { 
        this.getElementsByTagName('UL')[0].style.visibility="visible";
        // au survol, on montre l'élément
       } 
     l[n].onmouseout = function() 
       { 
        this.getElementsByTagName('UL')[0].style.visibility="hidden"; 
        // on le cache, dès que la souris ne survole plus
       }
     l[n].getElementsByTagName('A')[0].innerHTML+="&nbsp;<img src='Menu/FlecheDroite.gif' />";
     // flêche pour indiquer qu'il y a des sous-menus
    }
  else {
     l[n].getElementsByTagName('A')[0].innerHTML+="<img src='Menu/FlecheDroite.gif' style='width:0;height:0;'/>";
     // pour permettre de détecter le survol "hors du texte" avec IE
    }
 }

Merci d'avance
jeudi 31 mai 2007 à 14:23:27 | Re : incompatibilité d'un script ( IE Vs Safari)

bultez

Membre Club





Bonjour,

    tiens... serait-ce mon menu qu'il a été mis ici par moi ?
    je n'ai pas de mac, donc pas de safari, je vais avoir
       du mal à aider.
    mais d'autres intervenants devraient passer....


Cordialement                Bul     [mon Site]     [M'écrire]



lundi 23 novembre 2009 à 14:50:50 | Re : incompatibilité d'un script ( IE Vs Safari)

verdy_p

C'est tout simple il me semble:

var l=document.getElementById("Menu").getElementsByTagName('LI');

Le deuxième appel de méthode est incorrect car getElementById retourne une collection d'éléments (un tableau en fait), et ce tableau ne contient pas pas la méthode getElementsByTagName()

(IE rajoute cette méthode dans le tableau, mais ce comportement n'est pas correct car la méthode n'est pas un élément HTML valide que devrait retourner getElementById).

Les méthodes "getElement(s)By...()" ne s'appliquent qu'à un document, pas à un élément ou un tableau d'éléments.
lundi 23 novembre 2009 à 15:00:55 | Re : incompatibilité d'un script ( IE Vs Safari)

Bul3

Membre Club
>>car getElementById retourne une collection
>>d'éléments (un tableau en fait)
pas du tout ! d'ailleurs un ID est
obligatoirement unique dans une page

.getElementsByTagName lui oui
lundi 23 novembre 2009 à 15:02:07 | Re : incompatibilité d'un script ( IE Vs Safari)

Bul3

Membre Club
mais bon... aujourd'hui on fait
un menu uniquement en css
lundi 23 novembre 2009 à 15:05:27 | Re : incompatibilité d'un script ( IE Vs Safari)

Bul3

Membre Club
petite précision encore,
avec Safari sous Windows (xp) ça fonctionne
lundi 23 novembre 2009 à 15:08:03 | Re : incompatibilité d'un script ( IE Vs Safari)

verdy_p

Ceci dit, ça marche dans Chrome (basé aussi sur le moteur HTML5 de WebKit). Le problème peut éventuellement provenir du fait que l'id "Menu" n'est pas unique dans ton document comme il le devrait; auquel cas, getElementById() ne retourne pas un seule élément, mais peut retourner un tableau d'éléments (indexés par numéro 0 à n-1) ou bien un seul mais pas le bon, ou voire NULL.
Vérifie ton code HTML pour voir si tes ID's sont uniques.
lundi 23 novembre 2009 à 15:10:28 | Re : incompatibilité d'un script ( IE Vs Safari)

verdy_p

En théorie oui, un ID est unique dans une page. Mais il arrive facilement que ce ne soit pas le cas. Dans ce cas le comportement de getElementById (noter le singulier dans le nom de la méthode) est indéfini et varie d'un navigateur à l'autre.
lundi 23 novembre 2009 à 15:14:47 | Re : incompatibilité d'un script ( IE Vs Safari)

verdy_p

Si tu as Safari ou Chrome, utilise la Console Javascript pour le vérifier.
Tu as en bas de la fenêtre de la console une ligne qui commence par un ">" en bleu, qui permet de regarder ce que te retourne document.getElementById("Menu") quand ta page HTML est affichée. tu verras ensuite le type d'objet (que tu peux dérouler en cliquant le triangle avant la valeur affichée).
Cette console Javascript est extrèmement utile (et bien plus pratique que celle que propose IE via sa barre d'outils optionelle pour développeurs...)
lundi 23 novembre 2009 à 15:15:09 | Re : incompatibilité d'un script ( IE Vs Safari)

Bul3

Membre Club
dans le script originel, bien entendu
1 seul ID="Menu", en fait on s'en
balance car getElementById délivrerait
le 1er.
>>auquel cas, getElementById() ne retourne pas un seule
>>élément, mais peut retourner un tableau d'éléments
en aucun cas... tester pour voir.

1 2 3

Cette discussion est classée dans : script, ie, getelementsbytagname, ul, safari


Répondre à ce message

Sujets en rapport avec ce message

Acces aux options de IE en script js [ par kenos ] Salut à tous,Je developpe un intranet et je voudrais vérifier que les utilisateurs n'ont pas modifié les options de leurs navigateurs notamment les pa un script de popu qui foctionne sous IE et Netscape etc.... [ par rem78 ] Bonjour,Jecherche un script de popup qui fonctionne aussi bien sous internet Explorer que sous Netscape, Opéra, Mozilla, etc....Je ch de la doc sus le Convertion script IE vers firefox [ par vinum ] J'ai un script qui fonctionne tres bien sous IE mais pas sous Firefox. En fait j'ai une liste deroulante, lorsque l'utilisateur selectionne un Pays, i réutilisation du code Javascript - IE vs Ns ?! [ par husleagd ] Bonjour à tous,J'ai un code qui marche bien dans IE, et Konqueror mais pas dans Netscape7.1 sous Linux.D'abord voilà le code: ..... <script language=" Editeurs html wysywyg sous Safari et IE pour Mac [ par eurokdj ] Bonjour, J'ai un petit souci avec l'excellent éditeur html wysywyg ConceptRTE : une personne qui l'a testée sous IE et Safari  pour Mac OSX ne voit pa Probleme Script Onchange Marche sur IE mais pas sur Mozilla firefox [ par jolazoule ] Bonjour,j'ai un ptit soucis de sript sur l'evenement on changevoici le script dans le : Java Script 1.2 [ par keops_dev ] [code]// Initialisation de la recette à selectionnerfunction Init(){  var msg;  msg = document.PassForm.B.value;   alert(msg); &nbsp aide sur un script [ par christmac ] Voila mon probleme j'ai recuperer un script qui ce nomme xpmenuv2_2 que je trouve super cool. J'ai reussi a le modifier pour en faire un peut ce que j Script pour Safari [ par vince1303 ] Bonjour, J'utilise ce script dans un iframe pour redimensionner celle-ci en fonction de son contenu. Ca marche très bien sur IE et Firefox (PC et script de date compatible ie, mozzila et opera [ par secral ] Bonjour,J'ai le script suivant qui fonctionne parfaitement et qui sert à la mise en forme d'une date au fur et a mesure de sa saisie dans un input.Le


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 : 0,577 sec (4)

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