11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour et merci de vous pencher sur mes misères.

Avant tout je vous précise que je suis hyper débutant et que je découvre le webmastering pour créer un site d'artiste (le mien). Je bricole avec dreamweaver mx et des extensions; parfois teste des copier-coller de codes récupérés sur des faq ou forums. Bref je n'y connait rien, mais il faut bien commencer et j'ai un bon niveau sur plein d'appli en autodidacte

Mon problème est que FIREFOX(1,0,7) ne réagit pas à mes actions OnResize
historique:
Au départ j'ai utilisé une extention de comportement qui fait le code toute seule pour avoir un calque toujours centré sur ma page. (en l'occurence "center layers" v4 de Michael Davis). L'Action est liée au body et se fait sur Onload. Pas de problème ça marche nikel avec FIREFOX (et IE, Netscape, safari). MAIS QUAND JE VEUX AJOUTER UNE DEUXIEME FOIS L'ACTION ET L'ASSOCIER À OnResize çA MARCHE PAS SUR FIREFOX (PAR CONTRE C'EST OK AVEC IE, Netscape, safari)

Avant de poster ici J'ai tout essayé ce que mon niveau total débutant (mais bon autodidacte du mac et aguéri à l'empirisme) me permet et rien à faire. J'ai aussi testé :
<body onResize="location.reload();">
qui marche très bien sur IE, Netscape, safari mais pas sur FIREFOX.
j'en déduit qu'il doit y avoir un code "onResize" spécifique à FIREFOX mais j'y connait rien donc je m'en remet à vous ô grands gourous du truc.

merci d'aider le bleu noob que je suis.
zobmac
(le sage montre la lune, l'imbécile regarde le doigt. Souvent j'aime regarder les doigts; pardon!)
Modifié par zobmac (01 Dec 2005 - 17:15)
merci pour ta réponse.
oui bien sûr les option java et javascript sont activées dans mon firefox. Je n'ai de problème qu'avec l'impossibilité de déclancher un reload par un redimensionnement de la fenêtre (OnResize).
Je n'ai pas réussi à avoir ma page (calques imbriqués dans un premier calque) centrée automatiquement autrement qu'avec javasscript. Si je savais faire autrement j'aurai essayé, mais je suis hyper débutant en site web. Donc j'ai utilisé un comportement (extension "center layers" qui génère du code toute seule. À mon niveau c'est bien pratique.
si tu as une recette bien claire pour débutant je suis preneur (j'ai essayé des copiers coller trouvés sur des forums ou des faq, mais tout n'étatit pas très clair et ça n'a pas marché)
merci quand même pour ta réponse, bien que ça m'avance pas des masses.
cyberSalutations
zobmac
Bon alors pour ton Firefox, tu vérifies : il y a des options détaillées (autoriser tel ou tel type d'action), peut-être qu'il y a juste une case de décochée qui gène.
Sinon, avec une adresse pour voir ta page, on pourrait déjà voir s'il n'est pas possible de centrer ton contenu plus simplement qu'avec du javascript.
Salut,

Pour gérer le OnResize sur FireFox, il ne faut pas appeler l’évènement dans ta balise HTML <body>.

Tu devrais plutôt insérer un lien vers un fichier Javascript qui contiendrait le code suivant :


function resize(e){
	alert("Je redimensionne...");
}

window.onresize = resize;


Attention : IE gère très mal le OnResize, il suffite de tester le code ci-dessus pour s'en rendre compte (le déclenchement de l'évènement est mal géré...).

@ ++.
Plusieurs choses :
- les évenements s'écrivent normalement sans majuscules en XHTML. (onresize et non onResize). Les navigateurs sont tolérants, mais sait-on jamais.
- les calques ça n'existe pas. Il existe des éléments positionnés en absolu qu'on a appelé "calques" à un moment donné et une obscure balise <layer> qui n'a pas fait long feu et qu'il vaut mieux oublier.
- centrer des éléments postionnés en absolu, c'est faisable, mais il vaut bien mieux les laisser dans le flux. Si tu ne comprends pas cette phrase, renseignes-toi sur les CSS, ce sera plus utile que de te plonger directement dans javascript.
uTROT a écrit :
Salut,

Pour gérer le OnResize sur FireFox, il ne faut pas appeler l’évènement dans ta balise HTML <body>.

Tu devrais plutôt insérer un lien vers un fichier Javascript qui contiendrait le code suivant :


function resize(e){
	alert("Je redimensionne...");
}

window.onresize = resize;


Attention : IE gère très mal le OnResize, il suffite de tester le code ci-dessus pour s'en rendre compte (le déclenchement de l'évènement est mal géré...).

@ ++.

merci de ta réponse mais comment et où insérer le lien vers javascript
et je ne veux pas de message d'alerte mais simplement que firefox recharge la page si la fenêtre et redimensionnée.
merci @+
ZM
J'ai lu plein de trucs sur le centrage négatif mais bon sang qu'est–ce que c'est compliqué quand c'est expliqué par des pro pour des pros...·
Finalement grace aux explications (pas très claires au début) de Stephane Moriaux sur un autre forum, la lumière a jailli, et j'ai fini par comprendre le principe. Je vous livre donc ma solution :

Donc pour centrer un site dans un language profane de débutant (nul comme moi), mais compréhensible par tous :

1# Créer un calque “calquecentrage” de 1pxX1Px marges top et left =50%

2#imbriquer dans claquecentrage un nouveau calque “calquecentré” (à taille fixe) dont les marges seront: margin–left = – (la moitié de sa largeur) et margin–top= – ( la moitié de sa hauteur)·

3# imbriquer tous les autres calques dans Claquecentré·

4#être heureux car ça marche avec IE 5.2/netscape 6/ safari et FIREFOX‚ et faire un bô site·

5#penser à aider les débutants sur le forum quand je s'rai un bête du webmastering

MERCI à tous de vous être pris la tête pour moi et bonne fin d'année.
ZM
Administrateur
zobmac a écrit :
J'ai lu plein de trucs sur le centrage négatif mais bon sang qu'est–ce que c'est compliqué

Il y'a pourtant une règle très très simple à suivre : toujours éviter la bidouille du centrage négatif (qui apporte plus d'ennuis qu'autre chose, voir les différentes explications à ce sujet dans le forum), au profit du centrage "naturel" à l'aide des marges latérales automatiques.
Ce sujet est marqué "Résolu" mais il ne l'est pas !

La solution du centrage négatif finalement adoptée résout le problème dans ce cas particulier seulement.

La solution de uTROT fonctionne bien avec alert() mais pas pour un rechargement de la page avec window.location.reload().

onresize = new Function('window.location.reload()'); ne fonctionne pas sur firefox et visiblement c'est volontaire.

La solution que j'ai trouvé pour contourner cette bride est la suivante :

onresize = new Function('setTimeout("window.location.reload()",0)');


Smiley langue