| Das HTML-Element <iframe> erlaubt die Einbettung kompletter Webseiten innerhalb anderer Seiten. | Sehen sie hier einige der interessante Möglichkeiten dieser Technik. |
HTML
|
HyperText Markup Language - Einbettung |
| <iframe> | Standard-Beispiel |
| Wechselrahmen | Austausch von Inhalten |
| Zurück ... | Austausch von Inhalten mit "eingefrorener history" |
| Dynamische Webseiten | Interaktive Steuerung der Rahmenseite mit Formular |
| Scrollbox mit CSS | Rollbalken begrenzen übergroße Elemente. |
| Sichtbarkeit | Mit CSS ein/aus/um-schalten |
| Bilder | Wechselrahmen mit variabler Ausrichtung und Größe |
| Javascript | Programme in anderen Rahmen ausführen |
| Alternativ-Code | Wenn der Browser keine Innenrahmen kennt... |
| Probleme | CSS-Fehler gängiger Browser |
| Google Maps | Anwendungs-Beispiel: Einbettung von Landkarten |
| HTML 5 | x |
<iframe> |
|
|
Rechts ein <iframe>-Innenrahmen Darin ist eine komplette andere Webseite eingebettet. Die Größe des Rahmens wird vorgegeben - Wenn der Inhalt mehr Platz braucht, dann wird er mit Rollbalken angezeigt. Das ist ideal zur platzsparenden Anzeige langer Tabellen, großer Bilder, etc. Dieser Link startet ein Javascript-Alarmfenster in der eingebetteten Webseite. Details dazu im Kapitel Javascript dieser Seite. Der Inhalt des Rahmens ist eine ganz normale Webseite. Klicken sie test.htm, um die gleiche Seite in einem eigenen Fenster zu öffnen. |
|
|
So sieht der HTML-Quellcode eines eingebetteten Rahmen aus. ● Das src-Attribut enthält einen Verweis auf jene Webseite, die hier eingebettet werden soll. ● Der Code 'im Inneren' des <iframe>-Elements sollte dann ausgeführt werden, wenn der Browser keinen <iframe> anzeigen kann. |
<iframe src="test.htm" id="if1" name="if1"
style="height:300px; width:100%;">
Ihr Browser kann keinen iframe anzeigen.<br />
</iframe>
Link zum <a href="test.htm">Inhalt</a><br /> |
id und nameVergeben sie für jedem Innenrahmen die Attribute id und name, beide mit dem genau gleichen Namen. |
In diesem Fall funktionieren sowohl die klassischen und z.T. veralteten Funktionen (name) als auch die modernen DOM-Funktionen und Methoden (id). In XHTML wird das Attribut name zwar toleriert aber ignoriert. |
Wechselrahmen |
|||||
Angezeigt wird test.htm
Klicken sie einen der Links, um den Inhalt des Wechselrahmens auszutauschen. |
|||||
|
Der Austausch der Inhalte erfolgt durch einfache
Hyperlinks (<a>-Elemente). Dabei muss als Verweisziel (target) der Name des <iframe> (hier: if2 ) angeführt werden. |
Der Wechselrahmen in HTML:
<iframe id="if2" name="if2"
src="test.htm" style="height:300px; width:100%;">
Bedienungs-Link:
</iframe>
<a href="test.htm"
target="if2">test.htm</a>
|
||||
|
Hier wird gezeigt, wie man das Attribut src
eines <iframe> mit Javascript lesen oder schreiben
( = austauschen) kann. Das Kapitel Bilder dieser Seite zeigt einige praktische Tricks zur Verwendung von Bild-Wechselrahmen. |
Bedienungs-Link mit Javascript:
<a href="javascript:xchg("if2","test.htm">
test.htm</a>
Javascript: Inhalt eines <iframe> austauschen
function xchg(id,datei) {
var n=document.getElementById(id);
}
alert("src(alt)="+n.src); n.src=datei; alert("src(neu)="+n.src); |
||||
Historyhistory) eingetragen. |
Wenn sie danach die"Zurück"-Taste ihres Browsers klicken, dann wird der
Rahmen-Inhalt zurück-getauscht, nicht - wie sie vielleicht erwarten - diese Webseite
durch die vorige ausgetauscht. Umgehung dieses Problems im Kapitel Eingefrorene History |
||||
Eingefrorene History (Besuchs-Chronik) |
|
HistoryWenn man den Inhalt eines Rahmens mit einem HTML-Link oder durch Änderung seines src-Attributs mit Javascript austauscht, dann wird das im Verlauf (history) eingetragen.Demonstration im Kapitel Wechselrahmen dieser Seite. |
Wenn sie danach die"Zurück"-Taste ihres Browsers klicken, oder mit Javascript
die Methode history.back() ausführen, dann wird der Rahmen-Inhalt
wieder zurück-getauscht. |
Beispiel:Der Inhalt dieses Rahmens (rechts) kann beliebig oft ausgetauscht werden, ohne die history zu verändern. Tauschen sie den Rahmen mehrmals und klicken sie dann die Zurück-Taste ihres Browsers.Achtung - Das Beispiel funktioniert nur dann wie erwartet, wenn sie noch keinen anderen Rahmen von anderen Beispielen dieser Seite ausgetauscht haben ! |
|
Programmierung:Hier wird angenommen, dass der <iframe> mit dem Namen if8 bezeichnet ist.Variante 1:
Die Javascript-Methode location.replace wird direkt angewendet.
Wenn die Methode von der gastgebenden Webseite verwendet wird, dann muss das Verweis-Ziel
(hier if8 ) angegeben werden.Variante 2:
Benötigt eine Javascript-Funktion. Hat dafür den Vorteil, dass man die
Funktion mit zusätzlichen Befehlen erweitern kann: Diese werden augeführt,
wenn der Rahmen-Inhalt getauscht wird.
|
Javascript-Funktion in der eingebetteten Webseite (für Variante 2):
function my_replace(newsrc) {
location.replace(newsrc);
}
Hyperlink auf der gastgebenden (dieser) Webseite
<a href="javascript:location.replace('histest_2.htm')"
target="if8">
Variante 1</a> <a href="javascript:my_replace('histest_2.htm')" target="if8"> Variante 2</a> Hyperlinks auf der eingebetteten Webseite
<a href="javascript:location.replace('histest_2.htm')">
Variante 1</a> <a href="javascript:my_replace('histest_2.htm')"> Variante 2</a> |
CSS ScrollBox |
|
|
Wenn es nur darauf ankommt, einen größeren Inhalt auf einen
bestimmten Bereich (Box) einer Webseite zu begrenzen, dann braucht man
weder <object>
noch <iframe>:
CSS bietet die Eigenschaft overflow, die auf einfachem Wege genau diese Aufgabe erledigt. Das funktioniert für fast alle Objekte, z.B. jedoch nicht mit allen Browsern . . |
Das ist ein Probetext. Der Text wird mehrmals wiederholt, damit der
reservierte Platz verbraucht wird.
Wenn der Text größer wird, dann richtet der Browser Rollbalken ein, mit denen man im Bereich navigieren kann. Das ist ein Probetext. Der Text wird mehrmals wiederholt, damit der reservierte Platz verbraucht wird. Wenn der Text größer wird, dann richtet der Browser Rollbalken ein, mit denen man im Bereich navigieren kann. Das ist ein Probetext. Der Text wird mehrmals wiederholt, damit der reservierte Platz verbraucht wird. Wenn der Text größer wird, dann richtet der Browser Rollbalken ein, mit denen man im Bereich navigieren kann. Das ist ein Probetext. Der Text wird mehrmals wiederholt, damit der reservierte Platz verbraucht wird. Wenn der Text größer wird, dann richtet der Browser Rollbalken ein, mit denen man im Bereich navigieren kann. Genug gesehen ? |
|
Rechts der Quelltext der rechts oben gezeigten ScrollBox. Begrenzen sie Höhe und Breite der Box und setzen sie die style-Eigenschaft overflow:scroll Tipp: <div>-Elemente nehmen ohne sonstige Anweisung 100% der Breite des Eltern-Elements ein. Manche Browser ergeben leider unterschiedliche Fehler mit und ohne ausdrückliche Festlegung der Breite. |
<div style="height:100px; width:100%; overflow:scroll;">
Das ist ein Probetext. Der Text wird ...
</div>
|
Sichtbarkeit ein/aus-schalten |
|
|
HTML-Quellcode: Der Trick: Beide Elemente werden angelegt, eines davon wird abwechselnd versteckt. Die beiden Elemente <iframe> und <div> sind in gleicher Größe, jedoch genau umgekehrter Sichtbarkeit display hintereinander angelegt. Die beiden Elemente werden mit Hilfe ihrer id-Attribute adressiert und mit Javascript manipuliert. |
<iframe id="if5" src="test2.htm"
style=" display:inline; height:100px; width:100%;">
</iframe> <div id="d5" style="display:none; height:100px; width:100%;"> Das ist der Inhalt ...
</div>
|
|
Diese einfache Javascript-Funktion schaltet je nach Argument ('a' oder 'b') entweder
das <iframe> oder
das <div>-Element sichtbar und umgekehrt. Mit dieser Methode können sie eine beliebige Anzahl von Objekten einer Webseite sichtbar / unsichtbar schalten. Nachteil gegenüber Wechsel-Rahmen: Alle Elemente müssen in der Webseite angelegt werden, auch dann, wenn sie niemals angezeigt werden. |
function d5demo(ab) {
var n1=document.getElementById("if5");
}
var n2=document.getElementById("d5"); if(ab=="a") {
n1.style.display="inline";
}n2.style.display="none"; else {
n1.style.display="none";
}
n2.style.display="inline"; |
|
Manuelle Bedienung der Javascript-Funktion: Erfolgt durch Anklicken von HTML-Hyperlinks. ♦ Details zu CSS und zu den CSS-Eigenschaften display und visibility. |
|
Bilder @ Rahmen |
|
| Innenrahmen können auch Bilder enthalten. Dabei sind die Möglichkeiten interessant, die Anzeige mit Javascript zu steuern. | Eine einfache Alternative ist die Möglichkeit, große Bilder in ener CSS-Scrollbox anzuzeigen. |
|
Bedienungs-Elemente
Breite (CSS-Eigenschaft width):
Höhe (CSS-Eigenschaft height):
Ausrichtung:
Bildwechsel:
Skalierung:
|
|
| Das Bild ist in einen Standard Innenrahmen eingebettet. Die Höhe wird absolut in Bildpunkten (300px) angegeben, die Breite relativ zur gesamten verfügbaren Breite (50%). |
HTML: Einbettung des Bilder-Rahmens in diese Webseite:
<iframe id="if6" src="test.gif"
style="height:300px; width:50%;">
</iframe> |
|
Zur Steuerung des Innenrahmens werden nach Möglichkeit DOM-Methoden eingesetzt: Der <iframe> wird dazu mit seinem id-Attribut ( if6 ) adressiert. |
Javascript: Änderung von Höhe, Breite und Bild-Datei
var n=document.getElementById("if6");
n.style.height="200px"; n.style.width="50%"; n.src="neues_bild.gif"; |
|
Ausrichtung:
▼
Die CSS-Eigenschaft float wird zwar beim Laden dieser Seite
korrekt berücksichtigt, kann jedoch aus unbekannten Gründen mit keinem
der gängigen Browser Live geändert werden.► Das eigentlich veraltete Attribut align kann von gängigen Browsern gelesen und Live geändert werden. Allerdings erfolgt die tatsächliche Umgestaltung der Seite je nach Browser erst dann, wenn auch andere Eigenschaften (z.B. Breite) geändert werden. Sie können das Live testen, indem sie zuerst das Attribut align ändern und danach Höhe oder Breite. ► Trick zur Ausrichtung mit Javascript: Zuerst wird die aktuelle Breite gelesen, dann die Ausrichtung geändert, zuletzt die (gleiche) Breite wieder geschrieben. ▼ M$IE wehrt sich auch dagegen: Man muss die Breite auf einen anderen Wert setzen als vorher. In einem weiteren Schritt wird die Breite danach wieder auf ihren Original-Wert gesetzt. |
Die CSS-Eigenschaft float wird (derzeit) nicht
Live geändert:
n.style.float="left";
So wird die aktuelle Breite gelesen: var w=n.style.width;
Das Attribut align wird geändert: n.setAttribute("align","left");
Das funktioniert mit allen modernen Browsern. Nur für M$IE muss eigens ein neuer
Attribut-Knoten erzeugt werden:
var att=document.createAttribute("align");
att.nodeValue="left"; n.setAttributeNode(att); Zuletzt wird die aktuelle Breite geschrieben und damit die Umgestaltung der Webseite ausgelöst: n.style.width=w;
|
|
Skalierung:
Der Inhalt eines Rahmens kann nicht skaliert (vergrößert oder verkleinert werden).
Dazu wurde ein weiterer Trick angewendet:► In den Innenrahmen wird eine Mini-Webseite geladen, die nur das gewünschte Bild enthält. Das <img>-Element wird mit CSS formatiert und erhält im id-Attribut einen eindeutigen Namen. ► Danach kann das Bild mit Javascript skaliert werden, so wie rechts gezeigt. ► Die Methoden zum Starten von Javascript-Programmen in einem Innenrahmen finden sie im nächsten Kapitel. |
HTML-Code zur Einbettung eines <img>-Elements
<img id="demo" src="bild.gif"
style="height:100px; width:100px;" />
Javascript-Code zur Verkleinerung des Bildes auf 50%:
var n=document.getElementById("demo");
n.style.height="50px"; n.style.width="50px"; |
Javascript @ Rahmen |
|
| Javascript bietet interessante Möglichkeiten zur Steuerung von Innenrahmen. | Sie werden hier (z.T. als Wiederholung nochmals) zusammengefasst. |
Link zu einem eigenen JS-ProgrammZuerst zum Vergleich ein HTML-Link, mit dem ein Javascript-Programm auf der gleichen Webseite gestartet wird. Ein derartiger Link funktioniert in jedem Rahmen, d.h. sowohl auf der gastgebenden als auch auf der eingebetteten Seite.► Genau der gleiche HTML-Code auf einer Webseite in einem <iframe> startet ein JS-Programm auf der jeweils eingebetteten 'eigenen' Seite. ► Die Festlegung mit Attribut target ist stärker als alle anderen: Sie gilt zwar nur für einen einzigen Link, jedoch auch dann, wenn das Verweisziel für den Rahmen oder für die Webseite anders festgelegt wurde. (siehe folgende Absätze). In einem derartigen Fall ist die Angabe des Attributs target="_self" notwendig, um ein 'eigenes' JS-Programm zu starten. |
HTML-Link zu einem 'eigenen' JS-Programm:
<a href="javascript:alarmfenster()"
target="_self">
Click </a>
Mit Click starten sie ein
Javascript-Programm dieser Webseite.► Im ersten und zweiten Kapitel dieser Webseite kann die Seite test.htm eingebettet werden. Sie enthält Links zum Start von Javascript-Programmen im eigenen Rahmen (Child) und in der gastgebenden Seite (Parent). |
Link zu einem fremden JS-ProgrammSo sieht ein HTML-Link zum Start eines JS-Programms, das sich auf einer Webseite in einem anderen Rahmen befindet.► Das Verweisziel (target) muss den Namen des Rahmens tragen (hier if1 ). ► Alternativ können JS-Programme auch in jedem anderen Rahmen gestartet werden, z.B. im Navigations-Rahmen auf der linken Seite. ► Sie müssen ein JS-Programm des festgelegten Namens (hier alarmfenster ) auf jeder Webseite bereithalten, die im Ziel-Rahmen eingebettet werden könnte - Sonst gibt es eine Fehlermeldung. ► Diese Festlegung gilt nur für einen einzigen Link und ist stärker als das Verweisziel des Rahmens oder der Webseite. |
HTML-Link zu einem JS-Programm der im Innenrahmen if1 eingebetteten Webseite:
<a href="javascript:alarmfenster()"
target="if1">
Click </a>
Mit Click starten sie ein
Javascript-Programm auf jener Webseite, die im
Innenrahmen if1 (erstes Kapitel dieser Seite) eingebettet ist.
Das funktioniert mit jeder Art von Rahmen, nicht nur mit Innenrahmen.Live-Demo: Auslösung von JS-Programmen im Navigations-Rahmen (linke Seite) |
Verweisziel für einen RahmenSo wird das Verweisziel (target) eines ganzen Rahmens festgelegt.► Das Ziel gilt für jede dort eingebettete Webseite. Es kann jedoch auf jeder Seite und für jeden Link anders festgelegt werden. ► Im Beispiel wird das Ziel fz festgelegt. Es gilt sowohl für 'gewöhnliche' HTML-Links (zum Austausch von Webseiten) als auch für Javascript-Links. ► Bei Click auf einen JS-Link einer beliebigen in if1 eingebetteten Webseite wird das JS-Programm daher im Rahmen fz gesucht. |
<iframe id="if1" name="if1"
src="test.htm" target="fz">
</iframe> |
Verweisziel für eine WebseiteSo wird das Verweisziel (target) einer einzelnen Webseite festgelegt.► Das Ziel gilt für alle Links der Webseite (Austausch von Webseiten und JS-Links). Es kann jedoch für jeden Link individuell anders festgelegt werden. ► Diese Festlegung ist 'stärker' als jene für den Rahmen, d.h. sie gilt auch dann, wenn für den Rahmen ein anderes Ziel festgelegt wurde. |
<html>
<head> ... <base target="fz" /> </head> <body> ... </body> </html> |
Javascript ruft JavascriptInnerhalb von Javascript-Programmen können andere Programme aufgerufen werden.► Angeforderte Programme werden ohne besondere Vereinbarung auf der gleichen Webseite gesucht. ► Im Beispiel wird das JS-Programm meldung interaktiv gestartet. Darin wird das JS-Programm sub1 aufgerufen. ► Im nächsten Absatz wird gezeigt, wie man aus dem Programm meldung JS-Programme in anderen Rahmen aufrufen kann. |
Javascript:
function meldung() {
HTML:
sub1();
}function sub1() { alert("Alarmfenster mit sub1 ");
}
<a href="javascript:meldung()"> Meldung </a>
|
Javascript in einem anderen RahmenEin JS-Programm kann auch Programme in anderen Rahmen aufrufen. Als 'Adresse' wird die Objekt-Hierarchie angegeben, ausgehend vom eigenen Dokument.Rechts einige Beispiele dazu. ► Ein Innenrahmen <iframe> ist stets ein Child des eigenen Dokuments. ► Aus Sicht einer eingebetteten Webseite ist die gastgebende Seite der Parent-Rahmen. |
Varianten für den Aufruf eines JS-Programms sub1 Im eigenen Dokument: sub1();
In einem Child-Rahmen (z.B. <iframe> ):
if1.sub1();
Im übergeordneten Parent-Rahmen:
parent.sub1();
In einem anderen Child fz des eigenen Parent:
parent.fz.sub1();
|
Austausch des Rahmen-InhaltsWird im Kapitel Wechselrahmen dieser Seite Live demonstriert. |
Inhalt von Rahmen if1 austauschen
function set_frame_src() {
var n=document.getElementById("if1");
}
n.src="neue_seite.htm"; |
Dynamischer RahmenWenn im Rahmen eine dynamische Webseite eingebettet ist, dann kann man Daten (Argumente) an diese Seite senden.Wird im Kapitel Dynamischer Rahmen dieser Seite Live demonstriert. |
Daten an die Seite im Rahmen if3 senden
function my_submit_a() {
var n=document.getElementById("if3");
}
var txt="test1.php?prob=Neue+Daten"; n.src=txt; |
|
Je mehr Funktionen vom Webserver zum Client verlagert werden, umso schneller funktioniert ihre Lösung: ► Am Client-PC ist fast immer ungenutzte Prozessor-Leistung verfügbar: Lassen sie möglichst viele Arbeiten an den Client-PC ausführen, vor allem interaktive Programmteile. |
► Das entlastet den Webserver und macht ihn daher für alle User schneller. ► Ein am Client-PC ausgeführtes Javascript-Programm ist typisch 100-1000mal schneller als auf ein vergleichbares Programm des Webservers und die Übersendung der erzeugten Webseite zu warten. |
Alternativ-Code |
|
|
Der gesamte Quelltext innerhalb eines <iframe>-Elements
wird nur dann ausgeführt, wenn der jeweilige Browser
keine <iframe>-Elemente verarbeiten kann oder darf. Dieser Aspekt wird wenig beachtet, da alle gängigen Browser Innen-Rahmen unterstützen. |
♣ Es ist guter Stil, dort einen manuell bedienbaren Link zum gleichen Ziel einzufügen. So kann ein/e AnwenderIn notfalls mit Mausklick zur ansonsten eingebetteten Webseite gelangen. |
QuelltextEs gibt Anwendungen, die eine Webseite nicht interpretieren (d.h. HTML-Anweisungen ausführen) sondern den Quelltext lesen. Dazu zählen u.a. die Robots (Bots, Spiders, ..) der Suchmaschinen.Man kann dieses Verhalten dazu nutzen, um Botschaften an diese Programme unterzubringen, die für normale BesucherInnen unsichtbar bleiben. |
♣ Im Sinne einer guten Web-Promotion sollte man den Alternativ-Code dazu benutzen, wichtige Stichworte zum Thema des Webs und der Webseite unterzubringen. |
DOMDer Alternativ-Code wird jedoch von gängigen Browsern nicht (oder nicht vollständig) in den Objekt-Baum des Webseiten-Dokuments eingebaut.Es ist daher nicht möglich (zumindest sehr unzuverlässig), dort Informationen zur späteren Auswertung mit → DOM-Methoden unterzubringen ! |
• Man kann problemlos das src-Attribut des <iframe>-Elements lesen oder ändern. (Beispiele "Wechsel-Rahmen"). • Das href-Attribut eines im Alternativ-Code enthaltenen <a>-Links ist jedoch entweder null oder ergibt beim Lesen einen Fehler ! |
Browser und CSS-Probleme |
|
<iframe>-Elementefunktionieren mit gängigen Browsern und Versionen ausgezeichnet.Einige Punkte erfordern jedoch besondere Maßnahmen. (Das kann sich in neuen Versionen bereits geändert haben). |
<object>-Elemente funktionieren derzeit weniger gut. In Zukunft (↓ HTML 5) wird jedoch die Anzahl und Bedeutung von Einbettungs-Elementen stark zunehmen. |
|
Übergeordnetes (parent) Element:
▲
Die CSS-Eigenschaft padding wird korrekt berücksichtigt.Wenn sie einen <iframe> in ein anderes Element einbetten, dann sollten sie dessen padding abschalten, (hier z.B. in der Zelle einer Tabelle <td style="padding:0px;"> |
CSS padding steuert den Abstand innerhalb eines Elements, CSS margin den Abstand außerhalb eines Elements. |
|
<iframe>-Element:
▼
CSS background-color funktioniert nur bei Gecko-Browsern
(Firefox, Mozilla, ..) so wie erwartet. M$IE setzt die Hintergrund-Farbe zwangsweise auf
weiß und ignoriert diese CSS-Eigenschaft im <iframe>-Element
völlig. Opera reagiert ähnlich, mit kleinen Unterschieden beim Außenrand.Setzen sie background-color:#FFF auf weiß, wenn das zum Layout passt - so sieht ihr <iframe> mit allen Browsern gleich aus. |
▼ CSS padding funktioniert nur bei Opera so wie erwartet, sollte daher besser nicht verwendet werden. ▼ Rahmen: CSS border wird von M$IE ignoriert. Der (ansonsten bei M$IE zwangsweise) Rahmen kann nur mit dem veralteten Attribut frameboder="0" abgeschaltet werden. |
|
<body> der eingebetteten Webseite:
►
CSS margin hat ist je nach Browser eine andere Standard-Einstellung.
margin steuert den Abstand außerhalb
eines Elements.Standard bei Gecko-Browsern ist 9px, bei M$IE 10-11px, bei Opera 5-6px. Sie können die Einstellung natürlich ändern, bei Opera allerdings nie <5px Bei anderen Browsern ist auch margin:0px möglich. Mit einem Javascript-Programm lässt sich der Rand für alle Browser gleich einstellen. |
▼ M$IE zeigt ein unangenehmes Verhalten, wenn der Inhalt zu groß für das äußere Element ist: Erstens werden immer beide Rollbalken (scrollbars) angezeigt, auch dann, wenn nur einer notwendig wäre. ▼ Zweitens wird der Inhalt nicht um die Breite der Rollbalken verkleinert, deshalb verdecken die Rollbalken (nur bei M$IE) immer einen Teil (16px) des Inhalts. Es ist möglich, auch dieses Problem mit einem Javascript-Programm zu korrigieren. |
|
Beispiel für die übergeordnete (parent) Webseite:
<td style="padding:0px;">
<iframe src="inhalt.htm" id="if1" name="if1" style="background-color:#FFF; height:150px; width:100%;">
Link zum <a href="inhalt.htm">Inhalt</a><br>
</iframe></td>
Beispiel: CSS-Anpassung im Inhalt eines <iframe>,
z.B. inhalt.htm
<html>
<head>
<title>iframe-Demo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <style type="text/css" media="screen"> body{margin:10px;}
</style><script type="text/javascript">
function my_onload() {
body_margin_adjust();
}
body_margin_framescroll(); // Browser: M=M$IE, N=Gecko(Firefox,Mozilla,Netscape,..), O=Opera
var brs1 = navigator.appName.substr(0,1).toUpperCase();
function body_margin_adjust() { // Korrigiert den body-margin auf den eingestellten Wert
var n=document.getElementsByTagName("body")[0];var mt=0; var ml=0; var mr=0; var mb=0; try{ // M$IE
mt=n.currentStyle.marginTop;
}ml=n.currentStyle.marginLeft; mr=n.currentStyle.marginRight; mb=n.currentStyle.marginBottom; catch(e) {} try{ // Mozilla, Opera
mt=window.getComputedStyle(n,null).marginTop;
}ml=window.getComputedStyle(n,null).marginLeft; mr=window.getComputedStyle(n,null).marginRight; mb=window.getComputedStyle(n,null).marginBottom; catch(e) {} // Zahl isolieren
mt.match(/([0-9]*)/); mt=parseInt(RegExp.$1,10);ml.match(/([0-9]*)/); ml=parseInt(RegExp.$1,10); mr.match(/([0-9]*)/); mr=parseInt(RegExp.$1,10); mb.match(/([0-9]*)/); mb=parseInt(RegExp.$1,10); // Opera
if(brs1=="O") {
mt-=4; if(mt<0) {mt=0;}
}
ml-=4; if(ml<0) {ml=0;} mr-=4; if(mr<0) {mr=0;} mb-=4; if(mb<0) {mb=0;} n.style.marginTop=mt.toString()+"px"; n.style.marginLeft=ml.toString()+"px"; n.style.marginRight=mr.toString()+"px"; n.style.marginBottom=mb.toString()+"px"; function body_margin_framescroll() { // Anpassung des body-margin nur bei M$IE und scrollbars
if(brs1=="M") {
var n=document.getElementsByTagName("body")[0];
}
mr=n.currentStyle.marginRight; mr.match(/([0-9]*)/); mr=parseInt(RegExp.$1,10); mr+=16; n.style.marginRight=mr.toString()+"px"; </script>
</head><body onload="my_onload()"> . . .
</body></html> |
|
|