1 1 9 21 0 0 0

Das iFrame Element

Dem iFrame möchte ich eine besondere Aufmerksamkeit widmen.
Vor Jahren, als der Internet Explorer noch meinte, Eigenschaften immer etwas anders zu interpretieren, hatte ich iFrames (ja klar - nur eins) auf der index.php eingesetzt wie folgt: <iframe src='url_zur_main.php' id='start' name='start' width='100%' height='100%' scrolling='no' marginheight='0' marginwidth='0' frameborder='0'></iframe>.
Der einzige Grund: der Internet Explorer wollte partout am recht Rand einen Streifen lassen. Ich weiß es nicht aber vermute, daß dort der Platz für Scrollbalken nicht zu verhindern war. Wäre dies kein Problem (zumindest für mich wars das), hätte ich den Inhalt der main.php -Seite in der index-Seite untergebracht. Alle anderen Browser hätten das anstandslos erledigt. Irgendwann konnte ich feststellen, dass es nun auch für den IE nicht mehr nötig wäre. Aber: nichts hält sich länger, als ein Provisorium!

Dass die anscheinend nur für den Übergang gesetzte iFrame-Lösung aber einen echten Lösungsansatz bietet bei der Bewältigung von php-generierten Seiteninhalten, kam irgend wann später.
Und wieso?
Bei jedem neuen Seitenaufruf wird der gesamte Inhalt des iFrames neu geladen. Soll aber über JavaScript eine sich ständig wiederholender Anzeige ununterbrochen laufen, dann wird jedesmals die Anzeige neu gestartet. Das nervt!
Es bedarf also einer Sicherung aktueller Variablenwerte.

Ein Beispiel zur Verdeutlichung: Der Inhalt des Containers #himmel { background-repeat: repeat-x;} soll ununterbrochen sich um 1px alle 100ms verschieben. Das tut er auch bis eine neue Seite aufgerufen wird. Und ... das Bild springt wieder in die Ausgangsposition. Das ist nun wirklich nicht das, was ich will!


Den QuellCode zitiere ich aber aus diesem Projekt:

51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<var id='var'><?php echo $machwas?></var>
<script type="text/javascript">
// auf der index-Seite ist die Variable < hpos_x > ohne Wert deklariert, 
// kann auch 0 haben iss also Wurscht
var obj_himmel = document.getElementById("fondoben") ;
var xa = obj_himmel.offsetLeft ; 
function MOVE_IT(){ 
// jetzt wird gefragt < ob hpos_x > mit <xa> übereinstimmen (ob Eltern und Kind gleich ticken)
// wenn nicht - hör auf deine Eltern und tu was die sagen (der psychologisch wertvolle Teil!)
  if( xa !=  window.top.document.getElementById("hpos_x").innerHTML){
   xa =  window.top.document.getElementById("hpos_x").innerHTML ;
   }else{
   xa++ ; // nichts passiert, zähl weiter
  }
//jetzt darfst du deinen Eltern mitteilen, was Phase ist (höflich und bestimmt)
  window.top.document.getElementById("hpos_x").innerHTML = xa ;
  obj_himmel.style.backgroundPosition = xa + "px" ; // und sie bewegt sich und bewegt sich
  window.setTimeout("MOVE_IT()", 100) ;
}
var ord = document.getElementById('var').innerHTML ;
if ( ord == 2 || ord == 3) MOVE_IT() ; // hier wird angestoßen! Prost!
</script>

Das funktioniert deshalb, weil außerhalb des iFramesInhaltes PHP auf Elemente des Elternfensters keinen Einfluß haben. Und jetzt ist klar:
Sowas geht nicht ohne iFrame

Die in Variablen gespeicherten Informationen aus den ElternElementen der index.php sind dann auch von überall abrufbar. Das habe ich in ein paar Sprüche gepackt:
Entsprechend der gespeicherten Werte werden die Aussagen formuliert.

Was wäre noch zu iFrames zu sagen? Nichts!

Weitere iFrames sind bei mir überflüssig geworden. Die Inhalte in den <article>-, <section>-, <nav> usw. -tags werden mittels PHP includiert. Die Inhalte legen sich einfach über Hintergrundbilder, Muster oder was weiß ich. Null-Beschränkung was die Gestaltung betrifft. Das würde ein iFrame nur überdecken. Und für die Inhaltsseiten passend die Hintergrundgestaltung des <main>-Elementes zu positionieren, das geht zu weit und wäre einfach nur Frickelei.




Dokument geändert am: 17. Dez. 2017 11:44