JavaScript - 2 Frames ändern - "lädt dauernd"
Geizhals » Forum » Programmierung » JavaScript - 2 Frames ändern - "lädt dauernd" (19 Beiträge, 122 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
JavaScript - 2 Frames ändern - "lädt dauernd"
01.12.2004, 07:37:49
hallo

ich hab ein problem wenn ich mit java script die inhalte zweier frames aendern will. irgendwie hab ich wenn ich auf den link zum aendern klicke immer einen permanenten ladebalken unten im internet explorer. ich mein, es funktioniert zwar, aber zB auf selfhtml das beispiel - dort ist das nicht. ist das weil ich mehr frames habe?...

index.php:
frameset rows="70,*,40">
    frame src="blank.php" name="top">
    frameset cols="150,*">
        frame src="menu.php" name="menu">
        
    /frameset>
    frameset cols="*,10,10,10,10,10">
        frame src="blank.php" name="bottom">
        frame src="blank.php" name="reload1">
        frame src="blank.php" name="reload2">
        frame src="blank.php" name="reload3">
        frame src="blank.php" name="reload4">
        frame src="blank.php" name="reload5">
    /frameset>
/frameset>


menu.php:
html>

head>

script language="JavaScript">
function ChangeTwoFrames(url1,f1,url2,f2) {
Frame1=eval("parent."+f1);
Frame2=eval("parent."+f2);
Frame1.location.href = url1;
Frame2.location.href = url2;
}
/script>
/head>

body>

a href="java script:ChangeTwoFrames('blank.php','action','blank.php','reload1')">Open Games

/body>

/html>



das ganze gibts hier zum anschaun:
http://www.nineinchnails.at/game/test/

auf selfhtml gehts ja ohne den ladebalken:
http://selfhtml.teamone.de/javascri.../zweiframes.htm
http://de.selfhtml.org/javascript/b.../zweiframes.htm

weiß da wer eine lösung?



Antworten PM Übersicht Chronologisch
 
Melden nicht möglich
............
Re(12): JavaScript - 2 Frames ändern - "lädt dauernd"
05.12.2004, 10:52:00
So, jetzt hab ich mir die ganze Geschichte mal in Ruhe angesehen und ausgiebig rumprobiert. Das scheint wirklich ein ziemlich eigenartiges IE-Problem zu sein, auf das Du dabei gestoßen bist. Ich versuch mal kurz zusammenzufassen, was ich dabei so erlebt hab:   B-)

Mein erstes wesentliches Ergebnis war mal, daß es, wenn man die action.php und die reload.php auf .html umbenennt, ab dem 2.Aufruf pro IE-Session perfekt funktioniert. ?-) (Also erster Klick auf den Link und ich hab den Balken, dann zurück oder andere Seite aufrufen, wieder das Frameset und den Link klicken - pfunziwunzifunztatatut!)

Wenn ich dann in der action.html noch ein externes Bild (dasselbe Bild am lokalen Webserver hilft nix) einbaue, dann funktionierts komplett; dasselbe - nur mit dem Namen action.php - jetzt wirds lustig: Es funktioniert beim ersten Klick auf den Link, aber bei einem weiteren nicht mehr; außer wenn ich zwischen den beiden Klicks den Cache leere.  %-)

Scheinbar liegt die Ursache in irgendwelchen eigenartigen Timingproblemen beim gleichzeitigen laden beider Frames: !:-)
Scheinbar werden die .html Files im Gegensatz zu .php Files nicht wirklich bei jedem Klick auf den Link tatsächlich geladen, weshalb das ganze in dem Fall eben nur beim ersten Klick auftritt. Außerdem scheint das nachladen eines externen Bildes das Problem offenbar auch zu beseitgen - außer es liegt im Cache und wird daher nicht mehr geladen.


Dann hab ich mir das aktuelle SelfHTML Beispiel (http://de.selfhtml.org/javascript/beispiele/zweiframes.htm ) genauer angesehen; dabei sind zusätzlich noch 'vor' und 'zurück' Links implementiert und eben bei diesen scheint es auch ein Timing-Problem mit dem Explorer zu geben. Diese Lösung hab ich mir dann abgeguckt und voila - es hat funktioniert!  :-)

Hier also der Javascript-Code mit dem es hoffentlich klappt:

    var f="";
    var u="";

    function ChangeSecFrame() {
        Frame2=eval("parent."+f);
        Frame2.location.href = u;
    }
    
    function ChangeTwoFrames(url1,f1,url2,f2) {
Frame1=eval("parent."+f1);
Frame1.location.href = url1;
        f=f2;
        u=url2;
        window.setTimeout("ChangeSecFrame()",10);
    }
(Die beiden globalen Variablen sind übrigens nötig, weil man dem Funktionsaufruf in setTimeout() keine lokalen Variablen mitgeben kann.)


lg
 mIstA
Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung