Aller au contenu

OnResize & FIREFOX (au secours ça marche pas)


zobmac

Sujets conseillés

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 Firebox (et IE, Netscape, safari).

Mais quand je veux ajouter une deuxième fois l'action et l'associer à OnResize ça ne 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!)

Edit : Arlette

Lien vers le commentaire
Partager sur d’autres sites

Salut :)

euh.... pas obligé d'écrire en majuscules, on n'est pas sourds :rolleyes::rolleyes:

Sinon, pourrais-tu poster ton code (de façon lisible :hypocrite: ) ?

Chez moi, une page basique fonctionne:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head><title>Page de Test</title></head>
<body onresize="alert('test');">
<p>test de redimensionnement</p>
</body>
</html>

Peut-etre a-tu oublié des ; dans ton code, mais on ne pourra pas t'aider plus sans ton script :unsure:

Modifié par MS-DOS_1991
Lien vers le commentaire
Partager sur d’autres sites

merci pour ta réponse.

en effet j'avait déjà testé le message d'alerte en OnResize et va savoir pourquoi ça marche.

Ce qui ne marche pas c'est qu'un OnResize déclanche un reload.

exemple: <body onResize="location.reload();">

de toute façon je te met le code qui ne marche pas ci-dessous (après une petite paranthèse d'escuse) et te remercie de ton aide

zobmac :fou::gueule:

(désolé pour les majuscules mais comme mon post est long ce n'était qu'un soucis de lisibilté; je sais bien que la cyberCulture veut qu'on associe les majuscule à des cris, mais il me semble que si les majuscules sont génantes dans une liste de login (chat etc..) car elle mettent en avnt un login plutôt qu'un autre, ces mêmes majuscules permettent une lisibilité à l'intérieur d'un message. Enfin désolé, je le frait plus ici. fin de la paranthèse)

Le calque (rectangle vert devrait se recadrer à chaque redimensionnement de la fenêtre; ça marche sur IE safari et netscaape, mais pas firefox

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_reloadPage(init) { //reloads the window if Nav4 resized
if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);

function MM_findObj(n, d) { //v4.01
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function BW_centerLayers() { //v4.1.1
if (document.layers || document.all || document.getElementById){
var winWidth, winHeight, i, horz, vert, width, height, offsetX, offsetY, negX, negY, group, x, y, args;
args = BW_centerLayers.arguments;

onresize = BW_reload;


winWidth = (document.all)?document.body.clientWidth:window.innerWidth;
winHeight = (document.all)?document.body.clientHeight:window.innerHeight;

for (i=0; i<(args.length-9); i+=10) {
horz = args[i+1];
vert = args[i+2];
width = parseInt(args[i+3]);
height = parseInt(args[i+4]);
offsetX = parseInt(args[i+5]);
offsetY = parseInt(args[i+6]);
negX = args[i+7];
negY = args[i+8];

x = ((winWidth - width)/2) + offsetX;
y = ((winHeight - height)/2) + offsetY;

x = (negX=='false' && (x < 0))?0:x;
y = (negY=='false' && (y < 0))?0:y;

layerObj = (document.getElementById)?document.getElementById(args[i]):MM_findObj(args[i]);

if (layerObj!=null) {
layerObj = (layerObj.style)?layerObj.style:layerObj;
layerObj.left = (horz=="true")?x:layerObj.left;
layerObj.top = (vert=="true")?y:layerObj.top;
}
}
}
}

function BW_reload() {location.reload();}
//-->
</script>
</head>

<body onLoad="BW_centerLayers('Layer1','true','true','730','475','0','0','false','false','false')" onResize="BW_centerLayers('Layer1','true','true','730','475','0','0','false','false','false')">

<div id="Layer1" style="position:absolute; left:71px; top:27px; width:730px; height:475px; z-index:1; background-color: #00FF00; layer-background-color: #00FF00; border: 1px none #000000;"></div>
</body>
</html>

Modifié par Monique
Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines plus tard...

bon apparemment personne ne sait comment obliger firefox à recharger une page si la fenêtre est redimensionnée....

étonnant, non; ça me semblai assez basique comme concept, mais je suis hypper débutant ....

bonne fin d'année à tous

ZM

Lien vers le commentaire
Partager sur d’autres sites

bon apparemment personne ne sait comment obliger firefox à recharger une page si la fenêtre est redimensionnée....

étonnant, non; ça me semblai assez basique comme concept, mais je suis hypper débutant ....

bonne fin d'année à tous

ZM

J'allais dire "tant mieux".

Honnêtement, si un site me recharge la page parce que j'ai eu le malheur de redimensionner ma fenêtre, je me sauve en courant immédiatement.

Pourquoi ? C'est simple:

- çà ce sert à rien, mais alors rien du tout

- c'est intrusif au possible

- moi qui suis revenu temporairement en 56k je t'assure que je préfère éviter de charger plusieurs fois une même page, vu le temps que çà prend.

Intéresses-toi plutôt aux mises en pages élastiques faites par le biais des CSS, tu perdras moins de temps avec ce genre d'inutilités ;)

Désolé pour le ton un peu sec du message, mais vraiment un rechargement de page au redimensionnement c'est vraiment le truc qui me sort les yeux, et je ne dois pas être le seul..

Çà fait même partie des raisons pour lesquelles je désactive très souvent le Javascript de mon navigateur, à vrai dire..

PS: ne confonds pas IE pour Mac et IE pour Windows. Ils n'ont en commun que le nom, sinon ce sont deux navigateurs TRÈS différents.

Lien vers le commentaire
Partager sur d’autres sites

Je crois qu'il voulait seulement centrer sa page.

Il existe des manières beaucoup plus simples de centrer horizontalement (en 2 lignes de CSS) que d'utiliser des procédés qui ont l'air un peu archaïques (ça me rappelle Netscape 4 où il fallait reloader la page à chaque redimensionnement de fenêtre quand on utilisait des calques... ;-) )

Lien vers le commentaire
Partager sur d’autres sites

J'allais dire "tant mieux".

Honnêtement, si un site me recharge la page parce que j'ai eu le malheur de redimensionner ma fenêtre, je me sauve en courant immédiatement.

Pourquoi ? C'est simple:

- çà ce sert à rien, mais alors rien du tout

- c'est intrusif au possible

- moi qui suis revenu temporairement en 56k je t'assure que je préfère éviter de charger plusieurs fois une même page, vu le temps que çà prend.

Intéresses-toi plutôt aux mises en pages élastiques faites par le biais des CSS, tu perdras moins de temps avec ce genre d'inutilités ;)

Désolé pour le ton un peu sec du message, mais vraiment un rechargement de page au redimensionnement c'est vraiment le truc qui me sort les yeux, et je ne dois pas être le seul..

Çà fait même partie des raisons pour lesquelles je désactive très souvent le Javascript de mon navigateur, à vrai dire..

<{POST_SNAPBACK}>

Bon d'accord mais mon centrage se fait onload et si la fenêtre était déjà ouverte trop petite et que tu la redimensionnes mon site (suite de layer DIV imbriqués dans le layer1) n'est plus centré et ça perd complètement son sens surtout la lisibilité pour les ceusses en 800X600 (tu vois je pense aux gens moi aussi).

Si t'as une solution simple et pré& maché pour un novice total en CSS je t'écoutes, moi je cherche un centrage la technique pour y arrivé ça m'est égal

voilou...

@+

ZM

Modifié par zobmac
Lien vers le commentaire
Partager sur d’autres sites

Je crois qu'il voulait seulement centrer sa page.

Il existe des manières beaucoup plus simples de centrer horizontalement (en 2 lignes de CSS) que d'utiliser des procédés qui ont l'air un peu archaïques (ça me rappelle Netscape 4 où il fallait reloader la page à chaque redimensionnement de fenêtre quand on utilisait des calques... ;-) )

<{POST_SNAPBACK}>

Merci Remi enfin quelqun qui me comprend sans m'engueller. Bon c'est super de me dire et c'est fastoche en 2 ligne de CSS, mais c'est quoi les 2 lignes......

(à moins que ça soit classé secret défense!)

@+

ZM

Lien vers le commentaire
Partager sur d’autres sites

(suite de layer DIV imbriqués dans le layer1)

Je crois que tout le problème réside là ;)

Ce que je te conseilles, je le redis, c'est de t'intéresser aux mises en page élastiques faites par le biais des CSS.

Ainsi tes pages seront plus légères, plus accessibles: en un mot: meilleures.

Si le fait de te conseiller d'apprendre à construire mieux tes pages c'est t'engueuler, alors excuse-moi de t'engueuler ;)

Rien n'est secret défense sur le web: http://pompage.net/pompe/designelastique/

Lien vers le commentaire
Partager sur d’autres sites

mais c'est quoi les 2 lignes......

(à moins que ça soit classé secret défense!)

Le principe global est :

body{text-align:center;}
#mapage{margin:0 auto;width:...;text-align:left;}

Et tu mets tout ton contenu dans le div 'mapage'.

(Ne pas oublier de définir la largeur de 'mapage')

Lien vers le commentaire
Partager sur d’autres sites

Le principe global est :

body{text-align:center;}
#mapage{margin:0 auto;width:...;text-align:left;}

Et tu mets tout ton contenu dans le div 'mapage'.

(Ne pas oublier de définir la largeur de 'mapage')

<{POST_SNAPBACK}>

Merci remi, mais je ne suis pas sûr d'avoir mi le code au bon endroit.

peux-tu stp me le mettre dans l'exemple ci-dessous (un calque vertà centrer sur la page)

De plus comment faire pour que ça recentre si on agrandi la fenêtre?

merci @+

ZM

<html>

<head>

<title>Document sans titre</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</head>

<body>

<div id="Layer1" style="position:absolute; left:122px; top:62px; width:622px; height:400px; z-index:1; background-color: #00FF00; layer-background-color: #00FF00; border: 1px none #000000;"></div>

</body>

</html>

Lien vers le commentaire
Partager sur d’autres sites

J'ai lu plein de trucs sur le centrage négatif mais bon sang qu'estce 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: marginleft = (la moitié de sa largeur) et margintop= ( 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

Lien vers le commentaire
Partager sur d’autres sites

Ah, ben à ton tour de nous aider... ^_^

Puisque tu as lu beaucoup de choses sur le sujet, peux-tu me dire quel sont les inconvénients de la solution que je te proposais...

(à part que margin:auto n'est pas reconnu par IE5.2 et inférieur (2% des visiteurs) et NN4 (0,01%) et dans ce cas la page se met à gauche, ce qui ne m'empêche pas de dormir vu que c'est rare d'avoir un browser très ancien et un écran large).

Je ne demande pas ça pour polémiquer... S'il y a un autre inconvénient, j'aimerais sincèrement le savoir.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...