Avatar billede dme Nybegynder
28. februar 2001 - 23:53 Der er 9 kommentarer og
1 løsning

Centrering af layer ved resize i Netscape 4!

Hejsa!

Allerførst undskyld den lange postning af kode, men jeg tror, at det er den nemmeste måde for folk at overskue problemet. For at der ikke skal været for meget kode har jeg kun medtaget koden der bruges i Netscape 4.

Det første kodeeksempel virker fint i Netscape 4. Når man resizer sit vindue bliver layeret centreret igen.
I det andet kodeeksempel er der indsat to <SPAN>-elementer inden i layeret. Når der resizes i Netscape 4, så forsvinder baggrundsfarven i layeret og det placeres øverst i venstre hjørne.
Hvorfor det?

/David

---------- Start på kode der virker ----------

<html>
<head>
<title>Centreret layer</title>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">
<script language=\"JavaScript\">
<!--
function reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName==\"Netscape\")&&(parseInt(appVersion)==4)) {
    document.pgW=innerWidth; document.pgH=innerHeight; onresize=reloadPage; }}
  else if (innerWidth!=document.pgW || innerHeight!=document.pgH) location.reload();
}
reloadPage(true);


function findObj(n, d) {
  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=findObj(n,d.layers[i].document); return x;
}

function tmt_findObj(n){
    var x,t; if((n.indexOf(\"?\"))>0&&parent.frames.length){t=n.split(\"?\");
    x=eval(\"parent.frames[\'\"+t[1]+\"\'].document.getElementById(\'\"+t[0]+\"\')\");
    }else{x=document.getElementById(n)}return x;
}
//-->
</script>
</head>

<body bgcolor=\"#FFFFFF\" onLoad=\"size()\" onResize=\"size()\">
<script language=\"JavaScript\">
function size(){
manu=navigator.appName;           
vers=navigator.appVersion;
layerRef = (document.getElementById) ? tmt_findObj(\"baggrund\") : findObj(\"baggrund\");

//Netscape 4.0+
    if (manu.indexOf(\"Netscape\")>=0 && vers.indexOf(\"4\")>=0)
        {
        winW = window.innerWidth-16;
        layerRef.left = ((winW-280)/2);
        }
}
</script>
<div id=\"baggrund\" style=\"position:absolute; width:280px; height:28px; z-index:1; top: 50; left: 10; background-color: #a0a0a0; layer-background-color: #a0a0a0; border: 1px none #000000\">
  <table width=\"280\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\" height=\"28\" bordercolor=\"#000000\">
    <tr align=\"center\" valign=\"middle\">
      <td>Centreret layer</td>
    </tr>
  </table>
</div>

</body>
</html>
---------- Slut på kode der virker ----------

---------- Start på kode der ikke virker ----------
<html>
<head>
<title>Centreret layer</title>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">
<script language=\"JavaScript\">
<!--
function reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName==\"Netscape\")&&(parseInt(appVersion)==4)) {
    document.pgW=innerWidth; document.pgH=innerHeight; onresize=reloadPage; }}
  else if (innerWidth!=document.pgW || innerHeight!=document.pgH) location.reload();
}
reloadPage(true);


function findObj(n, d) {
  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=findObj(n,d.layers[i].document); return x;
}

function tmt_findObj(n){
    var x,t; if((n.indexOf(\"?\"))>0&&parent.frames.length){t=n.split(\"?\");
    x=eval(\"parent.frames[\'\"+t[1]+\"\'].document.getElementById(\'\"+t[0]+\"\')\");
    }else{x=document.getElementById(n)}return x;
}
//-->
</script>
</head>

<body bgcolor=\"#FFFFFF\" onLoad=\"size()\" onResize=\"size()\">
<script language=\"JavaScript\">
function size(){
manu=navigator.appName;           
vers=navigator.appVersion;
layerRef = (document.getElementById) ? tmt_findObj(\"baggrund\") : findObj(\"baggrund\");

//Netscape 4.0+
    if (manu.indexOf(\"Netscape\")>=0 && vers.indexOf(\"4\")>=0)
        {
        winW = window.innerWidth-16;
        layerRef.left = ((winW-280)/2);
        }
}
</script>
<div id=\"baggrund\" style=\"position:absolute; width:280px; height:28px; z-index:1; top: 50; left: 10; background-color: #a0a0a0; layer-background-color: #a0a0a0; border: 1px none #000000\">
  <span id=\"Linie1\" style=\"position:absolute; z-index:1; left: 0; top: 0; visibility: visible\" class=\"cursor\">&nbsp;</span>
  <span id=\"Linie2\" style=\"position:absolute; z-index:2; left: 0; top: 20; visibility: visible\" class=\"cursor\">&nbsp;</span>
  <table width=\"280\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\" height=\"28\" bordercolor=\"#000000\">
    <tr align=\"center\" valign=\"middle\">
      <td>Centreret layer</td>
    </tr>
  </table>
</div>

</body>
</html>
---------- Slut på kode der ikke virker ----------
Avatar billede brain Nybegynder
28. februar 2001 - 23:56 #1
prøv at brug layer taggen i stedet for div...
Avatar billede jumper Nybegynder
28. februar 2001 - 23:58 #2
Fordi Netscape 4 ikke virker !!

Når du resizer vinduet i Netscape 4, mister den alt information den havde omkring CSS. Det vil sige at alt hvad du har tilføjet med CSS ikke vil virke længere.

Derfor bliver du nødt til at genindlæse siden når vinduet resizes under Netscape 4.

Du kan læse en lille artikel om det på

http://www.webreference.com/dhtml/diner/resize/

Desværre, der er intet at gøre. Du bliver nødt til at genindlæse siden under Netscape 4 når vinduet resizes.

/Thor
Avatar billede dme Nybegynder
01. marts 2001 - 00:10 #3
Hej jumper!

Funktionen \"reloadPage(init)\" som er med ikke begge koderne skulle gøre dette.

/David
Avatar billede engrob Nybegynder
01. marts 2001 - 15:20 #4
Prøv alligevel at tilføje
    function reDo(){ window.location.reload() }
    window.onresize = reDo;
i dit script. Det kan være dreamweaver ikke kan finde ud af at lave scriptet (selvom jeg ikke helt selv tror på den).
Jeg lytter lige med...
Avatar billede dme Nybegynder
01. marts 2001 - 19:27 #5
Hej engrob!

Nope, den virker stadig ikke :(

/David
Avatar billede johnnyk Nybegynder
02. marts 2001 - 10:00 #6
Hej dme!
Når siden \"resizer\" beder du siden om at kalde din size() funktion i bodyen. Prøv at udskifte dette kald med \"location.reload();\".
/Johnny
Avatar billede johnnyk Nybegynder
02. marts 2001 - 10:30 #7
Nå ja - den skal vel ikke reloade hvis ikke det er NS4!? så kan du jo bare skrive:
onResize=\"java script: if (document.layers) location.reload();\"
Avatar billede johnnyk Nybegynder
02. marts 2001 - 11:12 #8
Ups - jeg kan se, at du allerede be\'r siden om at reloade i \"function reloadPage(init)\", så du kan vist helt undlade onResize-eventen!?
Avatar billede johnnyk Nybegynder
05. marts 2001 - 13:27 #9
Har du haft tid nok til at tjekke om det var det?
/Johnny
Avatar billede dme Nybegynder
06. marts 2001 - 09:02 #10
Beklager den lange svartid ...

Jeg har fået det til at virke ved at kombinerere den funktion jeg allerede brugte (reloadPage(init)), med den kode som jumper henviser til.

/David
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester