IFrame und style
am 23.08.2006 21:20:32 von letters
Hallo,
ich habe eine Seite mit folgendm Code am Ende
echo "
name=\"inline\" id=\"inline\" allowtransparency=\"true\" src=\"laden.php\"
style=\"position:absolute;width:790px;height:535px;left:200p x;top:120px;
overvlow:auto;border-style:none;display:none;margin-top:0;ma rgin-bottom:0;
margin-left:0;margin-right:0;\">";
?>
Durch einen Klick auf einen Link wird der IFrame auf display:'' gesetzt
funktioniert
Hier der Link
echo "
id=\"pic".$data[0]."\"
onclick=\"inline_show_discog($data[0],this.id,$press,$stamp) ;\"
class=\"hand\" /> \n";
Der Link funktioniert, das Script dazu ist folgendes (nun aber Javascript)
function inline_show_discog(ID,name,press,stamp)
{
var pos = ((document.body.clientHeight / 2) - 275);
window.document.getElementById("inline").style.top = pos;
window.document.getElementById("inline").style.left =
((document.body.clientWidth / 2) -375);
window.document.getElementById("inline").style.display='';
parent.inline.location.href = "inline.php?last_ID=" + ID + "&press=" +
press + "&stamp=" + stamp;
}
Auch das funktioniert. In dem Script inline.php gibt es nun wieder einen
Link zum Schliessen des Frames
Das Javascript dazu ist wieder folgendes:
function inline_out()
{
top.document.getElementById("inline").style.display='none';
top.document.getElementById("inline").style.left = -1000;
location.href = "laden.php";
window.document.getElementById("content").focus();
}
Auch das funktioniert.
Soweit so gut, wenn ich aber nun den Zurückbutton des Browsers benutze,
wird aus der History, die letzte Seite geladen. Es wird auch wieder der php
Code am Ende des Scriptes (also: echo "
border=\"0\" scrolling=\"no\" name=\"inline\" id=\"inline...) ausgeführt.
Nur der Style wird nicht gesetzt. Das heist, ich sehe den Inhalt der Seite
laden.php. Der Style display:none; wird ignoriert.
Warum ????
Wie bekomme ich mein php Script dazu, den IFrame wieder auf display:none zu
setzen, wenn die Browsernavigation benutzt wurde?
mfg
M. Fiedler
Re: IFrame und style
am 24.08.2006 00:43:33 von Christian Gabriel
Servus,
im Allgemeinen hast Du keinen Einfluß auf Benutzerverhalten und
Menübedienung :-(
Um Sicherzustellen, daß immer ein Anfangswert geladen wird, würde ich z.B.
eine Umleitung der Seite auf sich selber machen.... und das ganze js Zeugsl
weglassen. Das geht auch in PHP - bedingt aber ein Neuladen der Seite.
Grüße,
Christian
"Mathias Fiedler" schrieb im Newsbeitrag
news:1benv59p6bbpm$.1cg7fv8nj5zte$.dlg@40tude.net...
> Hallo,
>
> ich habe eine Seite mit folgendm Code am Ende
>
>
>
> echo "
> name=\"inline\" id=\"inline\" allowtransparency=\"true\" src=\"laden.php\"
> style=\"position:absolute;width:790px;height:535px;left:200p x;top:120px;
> overvlow:auto;border-style:none;display:none;margin-top:0;ma rgin-bottom:0;
> margin-left:0;margin-right:0;\">";
> ?>
>
> Durch einen Klick auf einen Link wird der IFrame auf display:'' gesetzt
>
> funktioniert
>
> Hier der Link
>
> echo "
> id=\"pic".$data[0]."\"
> onclick=\"inline_show_discog($data[0],this.id,$press,$stamp) ;\"
> class=\"hand\" /> \n";
>
> Der Link funktioniert, das Script dazu ist folgendes (nun aber Javascript)
>
> function inline_show_discog(ID,name,press,stamp)
> {
>
> var pos = ((document.body.clientHeight / 2) - 275);
> window.document.getElementById("inline").style.top = pos;
> window.document.getElementById("inline").style.left =
> ((document.body.clientWidth / 2) -375);
>
> window.document.getElementById("inline").style.display='';
> parent.inline.location.href = "inline.php?last_ID=" + ID + "&press=" +
> press + "&stamp=" + stamp;
> }
>
> Auch das funktioniert. In dem Script inline.php gibt es nun wieder einen
> Link zum Schliessen des Frames
>
>
>
> Das Javascript dazu ist wieder folgendes:
>
> function inline_out()
> {
>
> top.document.getElementById("inline").style.display='none';
> top.document.getElementById("inline").style.left = -1000;
> location.href = "laden.php";
> window.document.getElementById("content").focus();
> }
>
> Auch das funktioniert.
>
> Soweit so gut, wenn ich aber nun den Zurückbutton des Browsers benutze,
> wird aus der History, die letzte Seite geladen. Es wird auch wieder der
> php
> Code am Ende des Scriptes (also: echo "
> border=\"0\" scrolling=\"no\" name=\"inline\" id=\"inline...) ausgeführt.
> Nur der Style wird nicht gesetzt. Das heist, ich sehe den Inhalt der Seite
> laden.php. Der Style display:none; wird ignoriert.
> Warum ????
> Wie bekomme ich mein php Script dazu, den IFrame wieder auf display:none
> zu
> setzen, wenn die Browsernavigation benutzt wurde?
>
> mfg
>
> M. Fiedler
Re: IFrame und style
am 24.08.2006 08:53:45 von letters
Am Thu, 24 Aug 2006 00:43:33 +0200 schrieb Christian Gabriel:
> Servus,
> im Allgemeinen hast Du keinen Einfluß auf Benutzerverhalten und
> Menübedienung :-(
> Um Sicherzustellen, daß immer ein Anfangswert geladen wird, würde ich z.B.
> eine Umleitung der Seite auf sich selber machen.... und das ganze js Zeugsl
> weglassen. Das geht auch in PHP - bedingt aber ein Neuladen der Seite.
> Grüße,
> Christian
Das hatte ich ursprünglich auch vor. Aber es handelt sich hier um die
Aufstellung aller Schallplatten einer Rockgruppe. Diese Seite jedesmal neu
zu laden, würde endlose Ladezeiten nach sich ziehen. AJAX ist auch nicht
die Lösung, habe ich ebenfalls schon getestet. Deshalb benutze ich den
IFrame und lade dann von der Hauptseite aus darin die Detailinfos zu den
einzelnen Platten. Ich weis jetzt allerdings schon etwas mehr. Mein IFrame
bekommt als Startdatei die Seite "laden.php". Darauf steht nur "Bitte
warten.....". Wenn ich den nun aufrufe, sieht man zuerst diese Ausgabe. Nun
wird die eigentliche Seite geladen. Das dauert aber auf Grund der ebenfalls
großen Datenmenge etwa 1 - 2 Sekunden. In dieser Zeit sieht man halt den
Hinweis. Wenn ich nun im Browser zurück navigiere, bewege ich mich im
IFrame. Das bedeutet, der Browser läd einfach die vorhergehende WebSeite in
den IFrame. Das ist die "laden.php". Da er diese aber aus dem Cache holt,
ohne den Weg über den Server, kann ich dort doch auch nicht mit php
irgendwelche Werte abfragen, oder?
Mthias