 |
23.
Neue Ebenen erzeugen (07.02.2000)
Im Netscape-DOM lassen sich Ebenen dynamisch mittels Ebenenname=new Layer(...) erzeugen und danach mit Ebenenname.open() | Ebenenname.write(...) | Ebenenname.close()
mit Inhalt füllen.
Nachfolgend wird im Beispiel 23a eine JavaScript-Funktion zur Nutzung im Internet Explorer vorgestellt, die einem HTML-Dokument neue DIV-Ebenen hinzufügt.
Im BODY des Dokuments wird über die Eigenschaft innerHTML weiterer HTML-Code mit DIV-Anweisungen ergänzt. Diese enthalten CSS-Definitionen zur (absoluten)
Positionierung des jeweiligen Blocks.
Der Funktion neueEbene() werden in Klammern der Name des neuen DIVs, sein Inhalt (das kann natürlich auch weiterer HTML-Code sein) und die Parameter l (Left), t (Top), h (Height),
w (Width) – Angaben in Pixeln – sowie der Z-Index übergeben.
// JavaScript-Funktion 23a
function NeueEbene(DIVID,DIVinhalt,l,t,h,w,z)
{
if (document.all)
{
var neuesdiv;
neuesdiv="<DIV ID='"+DIVID+"' STYLE='Position: absolute; "+
"Left: "+l+"px; "+"Top: "+t+"px; "+"Height: "+h+"px; "+
"Width: "+w+"px; "+"Z-Index: "+z+"'>"+DIVinhalt+"</DIV>";
document.all.seite.innerHTML=
document.all.seite.innerHTML+neuesdiv;
}
}
<!-- Funktionsaufruf 23a -->
<A HREF="javascript:NeueEbene('D1','Ebene 1',100,150,100,200,1)">
Ebene 1</A>
Beispiel 23b verwendet die neuen Möglichkeiten, die das W3C-DOM bietet, welches bereits im IE 5.x bzw. Netscape 6 (getestet mit der Preview-2-Version) zumindest teilweise implementiert worden ist.
Speziell die Methoden getElementsById(), getElementsByTagName(), createElement() und setAttribute() sind für solche Anwendungen interessant, wobei setAttribute() offenbar nur von Netscape 6 verstanden wird.
// JavaScript-Funktion 23b
function NeueEbene(ebenenID,l,t,w,h,z,fg,bg)
{
if (document.getElementById && document.createElement)
{
var neueebene=document.createElement("DIV");
document.getElementById("seite").appendChild(neueebene);
var styledef="Position: absolute; Left: "+l+"px; Top: "+t+"px; Width: "+w+
"px; Height: "+h+"px; Z-Index: "+z+"; Color: "+fg+"; Background-Color: "+bg;
if (navigator.appName=="Netscape")
{
neueebene.setAttribute("STYLE",styledef);
neueebene.setAttribute("ID",ebenenID);
}
/* setAttribute(...) scheint im IE 5.x nicht zu klappen,
deshalb explizite style-Zuweisung */
if (navigator.appName=="Microsoft Internet Explorer")
{
neueebene.style.position="absolute";
neueebene.style.left=l;
neueebene.style.top=t;
neueebene.style.width=w;
neueebene.style.height=h;
neueebene.style.zIndex=z;
neueebene.style.color=fg;
neueebene.style.backgroundColor=bg;
neueebene.id=ebenenID;
}
document.getElementById(ebenenID).innerHTML="Inhalt";
}
}
<!-- Funktionsaufruf 23b -->
<A HREF="javascript:NeueEbene('ebene1',100,150,150,100,1,'white','red')">
Neue Ebene 1 erzeugen</A>
In den Beispielen sind Links angeordnet, die beim Anklicken jeweils eine neue Ebene erscheinen lassen.
|
 |