Avatar billede hirtshals Nybegynder
19. maj 2001 - 16:32 Der er 5 kommentarer og
1 løsning

Write To Layer

Jeg har fundet et smart lille script - write to layer

<SCRIPT language=\"JavaScript\">
<!--
function writetoLyr(name, message) {
    if (document.layers) {
        document.layers[name].document.close();
        document.layers[name].document.write(message);
        document.layers[name].document.close();
    } else {
        if (document.all) {
            eval(\"document.all.\" + name + \".innerHTML=\'\" + message + \"\'\");
        } else {
            document.getElementById(name).innerHTML = message;
        }
    }
}
//-->
</SCRIPT>

<P><A href=\"java script:;\" onClick=\"writetoLyr(\'TestLayer\', \'<P><FONT color=#FFFF66><B>See, it works!!!</B></FONT></P>\')\">Change OnClick</A> | <A href=\"java script:;\" onMouseOver=\"writetoLyr(\'TestLayer\', \'<P><FONT color=#FFFF66><B>See, still works!!!</B></FONT></P>\')\">OnMouseover</A></P>


Der virker både i Netscape og Explorer

<div> tagen der bliver skrevet til er absolut positioneret, dette er ikke så smart da det skal lægge sig ind en tabel der centreres på siden - og vil derfor være placeret forskelligt afhængig om brugerens opløsning er 800 x 600 eller 1024 x 768 - derfor ville jeg ændre placering af diven til relativ positionering.

Selvfølgelig ingen problemer i explorer - men i netscape 4.08 - ser jeg stadigvæk div tag - den er også relativt positioneret i forhold til tabellen den lægger inden i - men når jeg nu klikke på linket - udskiftes div/layer innerhtml ikke længere - bare fordi den nu er relativ positioneret.

Hvad kan jeg gøre
Avatar billede hirtshals Nybegynder
19. maj 2001 - 16:33 #1
Avatar billede engrob Nybegynder
19. maj 2001 - 16:36 #2
Det er fordi et relativt positioneret lag ikke opfattes som et \"rigtigt\" lag i ns4. Det du kan gøre er så at lægge et billede i tabellen, og aflæser dens position med javascript og får din div flyttet derhen...
Avatar billede hirtshals Nybegynder
19. maj 2001 - 16:48 #3
Aflæse position - er det

Har du et lille eksempel ??

er det noget med
<img id=test src=\"test.gif\">

document.all(test).positionX eller ??

Avatar billede engrob Nybegynder
19. maj 2001 - 16:50 #4
Jeg har lige lavet en side med det. Den vigtigste del har jeg stjålet fra jakoba

<html>
<head>
<title>For-løkke</title>
<script type=\"text/javascript\" language=\"javascript\">
<!--
ns4 = (document.layers) ? true : false;
ie4 = (document.all) ? true : false;
dom = (document.getElementById) ? true : false;


function gemX(obj) {
    if (obj == document.body) return obj.offsetLeft
    else return obj.offsetLeft +gemX(obj.offsetParent);
}

function gemY(obj) {
    if (obj == document.body) return obj.offsetTop
    else return obj.offsetTop +gemY(obj.offsetParent);
}

function flytDiv() {
    var picX = (ns4) ? document.images[\"Ko\"].x : gemX(document.images[\"Ko\"]);
    var picY = (ns4) ? document.images[\"Ko\"].y : gemY(document.images[\"Ko\"]);
    if (ns4) {
        document.layers[\"mov\"].left = picX;
        document.layers[\"mov\"].top = picY;
    }
    else if (ie4) {
        document.all[\"mov\"].style.left = picX;
        document.all[\"mov\"].style.top = picY;
    }
    else if (dom) {
        document.getElementById(\"mov\").style.left = picX;
        document.getElementById(\"mov\").style.top = picY;
    }
}


//-->
</script>

</head>
<body bgcolor=\"#FFFFFF\" leftmargin=\"0\" topmargin=\"0\" marginwidth=\"0\" marginheight=\"0\" onresize=\"flytDiv()\" onload=\"flytDiv()\">

<table cellpadding=\"0\" cellspacing=\"0\" width=\"300\" align=\"center\">
  <tr>
    <td><img src=\"transparent.gif\" width=\"1\" height=\"1\" name=\"Ko\"></td>
  </tr>
</table>

<div id=\"mov\" style=\"position: absolute; visibility: visible; width:100; background-color: #FF0000; layer-background-color: #FF0000; clip: rect(0 100 115 0)\">1<br><br><br><br><br><br></div>

</body></html>
Avatar billede hirtshals Nybegynder
19. maj 2001 - 18:06 #5
Takker mange gange
Avatar billede olebole Juniormester
22. maj 2001 - 12:43 #6
<ole>
I øvrigt er syntaksen i skrivefunktionen forkert. Man åbner et brev - skriver i det - og lukker det igen. Altså ikke:

        document.layers[name].document.close();
        document.layers[name].document.write(message);
        document.layers[name].document.close();

...men:

        document.layers[name].document.open();
        document.layers[name].document.write(message);
        document.layers[name].document.close();

/mvh
</bole>
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