Prise en compte des calques avec Firefox [résolu]

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
Mirovinben
Lézard vert
Messages : 194
Inscription : 13 nov. 2004, 08:54

Prise en compte des calques avec Firefox [résolu]

Message par Mirovinben »

Bonjour à tous

Ce post est mon premier post sur ce forum. Je viens d'installer Firefox sur mon PC (XP Home-SP2) et souhaite l'utiliser à la place de IE6...

J'ai créé un site perso utilisant des calques grâce à une librairie javascript qui teste le navigateur avec "document.all" (=IE >5.0) ou "document.layers" (NS 4.7)... ne riez pas mais c'était l'environnement que je connaissais au moment de mes premiers développements...

Comme vous vous en doutez, Firefox refuse d'afficher mes calques.. Quelle alternative me propsez-vous... Je peux sans regrets remplacer mes test sur NS4 par des tests sur Firefox (équivalent NS??).

exemple de script à modifier :

function ActivLayer(Nom) {
if (Nom!=null){
if (document.all) {document.all['IE'+Nom].style.visibility="visible";}
if (document.layers) {document.layers['NS'+Nom].visibility="show";}
}
}


mon site (normalement des calques s'affichent sur la page de gauche) selon le lien survolé en page de droite...ici

Merci d'avance...
Dernière modification par Mirovinben le 05 déc. 2004, 08:01, modifié 1 fois.
Bienheureux les fêlés car ils laissent passer la lumière...
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message par calimo »

Il faut utiliser documentGetElementById. Il se comporte comme le document.all mais il est "standard" c'est à dire défini par un organisme indépendant.
Il marche sur tous les navigateurs actuels, en tous cas tous ceux supportant le JS, IE 5 et +, Netscape 6 et+, Mozilla, Firefox, Safari, Konqueror, Opera etc :wink:
Ainsi la fonction suivante devrait marcher :

Code : Tout sélectionner

function ActivLayer(Nom) {
if (Nom!=null){documentGetElementById['IE'+Nom].style.visibility="visible";
}
Mirovinben
Lézard vert
Messages : 194
Inscription : 13 nov. 2004, 08:54

Après les calques, des bulles d'aide

Message par Mirovinben »

calimo a écrit :Il faut utiliser documentGetElementById. Il se comporte comme le document.all mais il est "standard" c'est à dire défini par un organisme indépendant.
Il marche sur tous les navigateurs actuels, en tous cas tous ceux supportant le JS, IE 5 et +, Netscape 6 et+, Mozilla, Firefox, Safari, Konqueror, Opera etc :wink:
Ainsi la fonction suivante devrait marcher :

Code : Tout sélectionner

function ActivLayer(Nom) {
if (Nom!=null){documentGetElementById['IE'+Nom].style.visibility="visible";
}
Merci pour ta réponse qui confirme mes recherches et tests de ce matin... J'ai modifié ma librairie qui est donc à présent compatible également avec Firefox...

Par contre je rencontre un pb d'adaptation d'une autre librairie créant des bulles d'aide avec ".innerHTML" qui ne semble pas avoir d'équivalent hors Krosoft et qui me permettait facilement d'insérer du code Html dans un groupe <div>...</div>
Pour la partie NS4.x j'utilisais document.layers["bulle"].document.write(HTML)...
Bienheureux les fêlés car ils laissent passer la lumière...
bobo
Iguane
Messages : 764
Inscription : 18 août 2003, 11:04

Message par bobo »

calimo a écrit :

Code : Tout sélectionner

function ActivLayer(Nom) {
if (Nom!=null){documentGetElementById['IE'+Nom].style.visibility="visible";
}
Attetion de bien mettre des () et non des [] :!:
Les standards c'est bon, mangez en !
Flore & Sébastien
Unité dans la diversité.
Mirovinben
Lézard vert
Messages : 194
Inscription : 13 nov. 2004, 08:54

Message par Mirovinben »

bobo a écrit :
calimo a écrit :

Code : Tout sélectionner

function ActivLayer(Nom) {
if (Nom!=null){documentGetElementById['IE'+Nom].style.visibility="visible";
}
Attetion de bien mettre des () et non des [] :!:
Voui, j'avais corrigé (et même inséré un "." entre document et Getxxx !)
:)
Bienheureux les fêlés car ils laissent passer la lumière...
martin
Varan
Messages : 1074
Inscription : 21 janv. 2004, 16:23

Message par martin »

Bonjour,
innerHTML fonctionne dans firefox et mozilla.
Je te file un lien en béton pour ce genre de correspondance, et solutions à apporter en cas de problème:
http://www.quirksmode.org/
Bobe
Iguane
Messages : 742
Inscription : 28 juil. 2003, 21:29

Message par Bobe »

c'est document.getElementById()

Code : Tout sélectionner

function ActivLayer(Nom) {
if (Nom!=null){document.getElementById('IE'+Nom).style.visibility="visible";
}
Concernant quirksmode.org, oui, c'est un très bon site et je le recommande assez souvent. Attention cependant, l'auteur n'est pas toujours très objectif dans les résultats qu'il donne.

innerHTML n'est pas standard.
« La vie d’un geek est un combat perpétuel contre l’imperfection »
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message par calimo »

La référence du support de DOM par Mozilla : http://www.mozilla.org/docs/dom/domref/
Et en particulier innerHTML

Cela dit je n'ai jamais réussi à coder quoi que ce soit en JS, donc voilà, j'essayais :wink: :lol:
PsyDk
Lézard à collerette
Messages : 317
Inscription : 23 sept. 2003, 09:41

Message par PsyDk »

calimo a écrit :La référence du support de DOM par Mozilla : http://www.mozilla.org/docs/dom/domref/
Cette référence est vraiment excellente, je m'en sers quand je dois faire du javascript :)

Pour ajouter ou modifier du contenu dynamiquement, je manipule directement l'arbre du document à l'aide de fonctions comme createElement, createTextNode, appendChild... Une logique très cohérente :)
Mirovinben
Lézard vert
Messages : 194
Inscription : 13 nov. 2004, 08:54

Message par Mirovinben »

martin a écrit :(...)innerHTML fonctionne dans firefox et mozilla.(...)
Pour innerHTML, il semblerait que cela ne fonctionne que pour lire du code (dump) et non pour en écrire... et il faut que j'arrive à écrire du html dans mon DIV !
PsyDk a écrit :(...)Pour ajouter ou modifier du contenu dynamiquement, je manipule directement l'arbre du document à l'aide de fonctions comme createElement, createTextNode, appendChild... Une logique très cohérente :)
Oups... Je vais approfondir...
Ton idée est intéressante sauf que je speak pas trop à l'aise l'english ! Tu n'aurais pas un didactitiel in french sous la main ou un exemple d'utilisation ? voui, j'abuse... excuse-moi ! mais j'aimerait tant avoir des scripts "multi-navigateurs" et je parie sur le succès de plus en plus grand de Firefox !
Bienheureux les fêlés car ils laissent passer la lumière...
Bobe
Iguane
Messages : 742
Inscription : 28 juil. 2003, 21:29

Message par Bobe »

Les traduction françaises des spécifications officielles pour le DOM (Document Object Model):
http://www.yoyodesign.org/doc/w3c/w3c.html#dom2

Pas franchement user-friendly mais néanmoins indispensable.
Après, pour des ressources en français, euh...
« La vie d’un geek est un combat perpétuel contre l’imperfection »
Mirovinben
Lézard vert
Messages : 194
Inscription : 13 nov. 2004, 08:54

Message par Mirovinben »

Bobe a écrit :Les traduction françaises des spécifications officielles pour le DOM (Document Object Model):
http://www.yoyodesign.org/doc/w3c/w3c.html#dom2

Pas franchement user-friendly mais néanmoins indispensable.
Après, pour des ressources en français, euh...
Merci !...
Je vais également potasser ma doc "SELFHTML" qui m' a bien dépannée jusqu'à maintenant...

Au fait !... J'ai oublié de préciser que ce que je veux écrire dans mon <DIV>...</DIV> est de l'Html (en fait un tableau à fond coloré pour faire une bulle d'aide plus sophistiquée). Je dis celà car en potassant le principe des "noeux" j'ai réussi à afficher quelque chose mais c'est du texte pur : le code html s'affiche comme si on voyait le source !... (createTextNode)
Bienheureux les fêlés car ils laissent passer la lumière...
martin
Varan
Messages : 1074
Inscription : 21 janv. 2004, 16:23

Message par martin »

Désolé, personnellement je n'ai pas trouvé de la doc conséquente sur ce sujet qu'en anglais (à part la recommendation traduite par Yoyodesign bien sûr). Enfin presque, en voilà un quand même:
http://gilles.chagnon.free.fr/cours/dhtml/

pour écrire des données (simples) dans un tag html, voilà un exemple minimaliste:

Code : Tout sélectionner

document.getElementById("idDiv").childNodes.item(0).data="ceci est un essai";
Plus rigolo, un exemple pour générer un tableau :
http://www.mozilla.org/docs/dom/technote/tn-dom-table/

plein de ressources diverses, et d'autres exemples :
http://www.mozilla.org/docs/dom/samples/

Sinon, regarde les docs javascript et ecmaScript, qui en fait te donneront les outils pour manipuler le DOM. Les docs de Netscape (sur javascript en autre) ne sont malheureusement plus accessibles directement aujourd'hui, il semblerait que la fondation mozilla essaie de récupérer ce qu'elle peut.
Cependant en fouillant on les trouve :
http://www.mozillazine.org/talkback.html?article=5381

Ne pas oublier le génialissime Inspecteur Dom de Mozilla ou Firefox, qui permet de parcourir ce foutu DOM dans tous les sens, et de faire des modifications en direct dans celui ci.

(Sinon innerHtml fonctionne en écriture, si çà te semble plus simple. Mon exemple devient :

Code : Tout sélectionner

document.getElementById("idDiv").innerHTML="ceci est un essai";
Mais il ne te permettra de faire des choses aussi subtiles.)
Bobe
Iguane
Messages : 742
Inscription : 28 juil. 2003, 21:29

Message par Bobe »

Mirovinben a écrit : Je vais également potasser ma doc "SELFHTML" qui m' a bien dépannée jusqu'à maintenant...
Attention quand même, le site a pas l'air très à jour.
« La vie d’un geek est un combat perpétuel contre l’imperfection »
Mirovinben
Lézard vert
Messages : 194
Inscription : 13 nov. 2004, 08:54

Message par Mirovinben »

Merci à tous...

Vos conseils m'ouvrent de nouveaux horizons... " Que le DOM soit avec moi".

Je croyais avoir testé en long en large et en travers innerHtml... J'ignore quelle erreur je faisais... Quoiqu'il en soit le bout de code proposé par "martin" fonctionne très bien... oups ! Voir ici le résultat... (ADSL souhaité ! ce sont des vignettes qui s'affichent dans la bulle d'aide)

Pour ce qui est du site "SELFHTML", il date un peu mais est très pratique... si vous avez aussi commode et plus à jour... je prends !
Bienheureux les fêlés car ils laissent passer la lumière...
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 2 invités