Sven: Probleme mit JavaScript mehrere Frames gleichzeitig zu ändern!

Hi, ich weiss echt nicht woran es liegt, da ich keinen Fehler finden kann, aber ich hab probleme mit einem JavaScript der 2 oder 3 Frames gleichzeitig ändern soll. Ich poste hier mal nen Teil vom Script, er verlinkt immer nur auf die 1. Quelle und dabei löst er die Frames auf und der Inhalt wird ganz normal wie ein Frame dargestellt. Ich hab echt keinen Plan warum es nicht funzt und bin echt am verzweifeln! Meine Frames haben auch Namen die ich in dem Script eingetragen hab. Könnt ihr mir helfen?

<html>
<head>
<title>xxx</title>

<style type="text/css">
body { margin-left:0px; margin-right:0px; margin-top:0px; margin-bottom:0px }
</style>

<script language="JavaScript">
  <!--
   function ZweiFrames(URL1,URL2)
   {
    parent.top.location.href=URL1;
    parent.main.location.href=URL2;
   }
   function DreiFrames(URL1,URL2,URL3)
   {
    parent.top.location.href=URL1;
    parent.main.location.href=URL2;
    parent.menu.location.href=URL3;
   }
  -->
</script>

</head>
<body text="#FFFFFF" bgcolor="#9B9BFF" link="#FF8000" alink="#FF8000" vlink="#FF8000">
<basefont face="Verdana" basefont size=2>

<a href="javascript:ZweiFrames('impressum-top.html','../online/impressum.html')"><img src="../images/copy.gif" width="127" height="36" border="0" onmouseover="this.src='../images/copyx.gif'" onmouseout="this.src='../images/copy.gif'"></a>

<a href="javascript:DreiFrames('online-top.html','../online/online-en.html','menu-en.html')"><img src="../images/engdeu.gif" width="186" height="48" border="0" onmouseover="this.src='../images/engdeux.gif'" onmouseout="this.src='../images/engdeu.gif'"></a>

</body>
</html>

  1. Hallo Sven,

    body { margin-left:0px; margin-right:0px; margin-top:0px; margin-bottom:0px }

    besser: "body { margin: 0px; }" erfüllt den gleichen zweck nur platzsparender.

    function ZweiFrames(URL1,URL2)
       {
        parent.top.location.href=URL1;
        parent.main.location.href=URL2;
       }
       function DreiFrames(URL1,URL2,URL3)
       {
        parent.top.location.href=URL1;
        parent.main.location.href=URL2;
        parent.menu.location.href=URL3;
       }

    Du kannst mir doch bestimmt zustimmen, dass diese Funktionen "unwirtschaftlich" sind? Das ließe sich auch in einer Funktion machen, z.B. in der folgenden:

    function Frame(top, main, menu)
     {
       parent.top.location.href = top;
       parent.main.location.href = main;
       if(menu)
         parent.menu.location.href = menu;
     }

    denk' mal drüber nach.

    <body text="#FFFFFF" bgcolor="#9B9BFF" link="#FF8000" alink="#FF8000" vlink="#FF8000">

    och, bitte nicht. Du hast da oben schon die schönen <style>'s reingebracht, dann mache das doch bitte auch mit denen.

    <basefont face="Verdana" basefont size=2>

    und das auch.

    <a href="javascript:ZweiFrames('impressum-top.html','../online/impressum.html')">

    hm - Syntax Error? ".../impressum.html');">" wäre auf jeden Fall schon mal besser.

    <img src="../images/copy.gif" width="127" height="36" border="0" onmouseover="this.src='../images/copyx.gif'" onmouseout="this.src='../images/copy.gif'">

    hm - "Bildwechsler" im Eventhandler: Der Browser wird bei jedem Hovern eine neue Anfrage beim Server machen. Zwar wird er (höchstwahrscheinlich) immer 304 (Not Modified - unverändert) sein, aber es ist schon verdammt viel mehr umstand für alle betroffenen. Besser: Bilder vorladen und in Variablen speichern, das ganze in einer funktion. Die Formatierung des <img>-Tags dazu noch mit CSS und alle sind glücklich.

    <a href="javascript:DreiFrames('online-top.html','../online/online-en.html','menu-en.html')"><img src="../images/engdeu.gif" width="186" height="48" border="0" onmouseover="this.src='../images/engdeux.gif'" onmouseout="this.src='../images/engdeu.gif'"></a>

    Ach so, und außerdem sehe ich hier sowieso nur zwei Links, und falls die nicht exemplarisch für eine ganze Liste stehen, geht das auch wesentlich effizienter.

    WauWAu

    --
    +-- WauWau Selfcode
    |   ss:) zu:) ls:< fo:~ de:] va:) ch:° n4:# rl:( br:< js:| ie:% fl:| mo:|
    +-- WauWau Nostalgie
    |   Die Bedeutung des Bellens ("WauWau") liegt ursprünglich darin, dass ein
    |   Gruppenfremder gewarnt oder ihm Alarm signalisiert wird.
    +-- WauWau Heute
    |   Heutzutage ist die Bedeutung von "WauWau": Achtung, hier kommt "WauWau"!
    |   Die Bedeutung liegt hierbei auf den "Wau", und zwar auf beiden.
    +-- WauWau E-Mail
    |   Coming soon...
    1. Danke für deine Tipps WauWau! Leider haben diese Änderungen nicht mein Problem gelöst! Und ich versteh immer noch net wo der Fehler liegen könnte, der Code sollte Fehlerfrei sein und funktionieren, leider tut er es nicht! :( Aber deine Verbesserungen sind auf jedenfall nützlich und ich werde sie auch in Zukunft anwenden. Danke! :)

      1. Hallo Sven,

        der Code sollte Fehlerfrei sein und funktionieren

        ist er aber nicht. Genaueres kannst du dem Posting von Christoph entnehmen.

        leider tut er es nicht

        Siehe Christophs Posting.

        CYA
        Dark Sider

        1. *LOL* Hab eben die Lösung selber gefunden! Ein Frame hab ich ja "top" genannt, offensichtlich muss aber so ein Name aus min. vier Buchstaben für dieses Script bestehen, damit es funktioniert. Als ich den Frame in "topx" umbenannt hab hats funktioniert! -_- Naja, von euch hab ich aber dennoch einige gute Verbesserungstipps bekommen, nochmal vielen Dank dafür!

          1. Nein, der Name muss nicht aus vier Buchstaben bestehen.
            Aber top ist ein "geschützter" Begriff.

            http://selfhtml.teamone.de/html/frames/verweise.htm#beenden_von_framesets -> dort nach top schauen...

            MfG
            Dark Sider

            1. Aha, schön das du es jetzt erst erwähnst!

              1. morgens,

                Aha, schön das du es jetzt erst erwähnst!

                Es ist eigentlich peinlich, daß man solche Verweise überhaupt "erwähnen" muß. Ganz oben im Kopfbereich des Forums steht doch: "Dies ist ein Forum als Ergänzung zu der Dokumentation  SELFHTML"  -  und das bedeutet, daß wir hier gerne über die Dinge reden möchten, die in SELFHTML noch nicht oder nicht aussagekräftig genug stehen. Was dort steht und nachlesbar ist, wird stillschweigen vorausgesetzt.

                Christoph S.

                1. Peinlich ist wohl nur das dir das als Profi nicht sofort aufgefallen ist und deine Behauptung meine Konstruktion könne gar nicht funktionieren falsch war!

                  1. Hi Sven,
                    Entschuldige, aber du hast wirklich einen Patschen.
                    Leute gibt's...tststs...

                    Gruß

                    Kurt

                    --
                    Nein, ich beantworte keine Anfragen per e-mail.
                    ss:( zu:) ls:[ fo:) de:] va:| ch:| sh:( n4:° rl:( br:? js:| ie:% fl:( mo:?
                    "Ein Wunsch kann durch nichts mehr verlieren als dadurch, dass er in Erfuellung geht."  (Peter Bamm; dt. Schriftsteller; 1897-1975)
                    http://elektro-dunzinger.at
                    http://shop.elektro-dunzinger.at
              2. Ich bitte hiermit untertänigst um Entschuldigung.

                Davon abgesehen, hättest du bei deiner Suche in SelfHTM auch selbst darauf stoßen können, ohne die Hilfe eines "arroganten Profis" in Anspruch nehmen zu müssen.

                Mit säuerlichen Grüßen

                Dark Sider

                1. Entschuldigung angenommen.

          2. hallo Sven,

            *Ein Frame hab ich ja "top" genannt

            Wobei du übersehen hast, daß "top" ein "reservierter Name" ist, den man nicht als selbstdefinierten Namen verwenden sollte.

            offensichtlich muss aber so ein Name aus min. vier Buchstaben für dieses Script bestehen

            Falsch.

            Als ich den Frame in "topx" umbenannt hab hats funktioniert!

            Selbstverständlich. Weil du damit keinen "reservierten Namen" mehr verwendest. Aber wirklich gelernt hast du durch diese Umbenennung noch nichts  -  und du solltest dich hüten, die damit gewonnene Erkenntnis für allgemeingültig zu halten.

            Christoph S.

  2. hoi,

    Hi, ich weiss echt nicht woran es liegt, da ich keinen Fehler finden kann

    Naja, du hast _echt_ nicht genug herumgeschaut, wann, wie, warum und mit welchem Ergebnis vergleichbare Fragen hier im Forum und im Forumsarchiv bereits debattiert wurden.

    Ich hab echt keinen Plan warum es nicht funzt

    _echt_ nicht?

    und bin echt am verzweifeln!

    oh, du Armer. Aber gegen eine _echte_ Verzweiflung kann das Forum natürlich was tun, gelle?

    Meine Frames haben auch Namen die ich in dem Script eingetragen hab.

    Hm, und dein weiter unten angegebener Code enthält auch diese Namen?

    Könnt ihr mir helfen?

    Sicher doch. Wollen wir mal loslegen:

    <html>

    upsa. Fehlt da nicht noch was zu "!DOCTYPE" ?

    <head>
    <script language="JavaScript">

    upsa. Sollte das nicht irgendwas mit "script type" zu tun haben (zu hunderten Beispielen im Forumsarchiv nachlesbar) ?

    function ZweiFrames(URL1,URL2) {
        parent.top.location.href=URL1;
        parent.main.location.href=URL2;
       }
       function DreiFrames(URL1,URL2,URL3) {
        parent.top.location.href=URL1;
        parent.main.location.href=URL2;
        parent.menu.location.href=URL3;
       }
    </script>

    Na gut, das kann man so machen. Ist aber alles andere als schön.

    <body text="#FFFFFF" bgcolor="#9B9BFF" link="#FF8000" alink="#FF8000" vlink="#FF8000">
    <basefont face="Verdana" basefont size=2>

    ÄKS. DAS GEHT ÜBERHAUPT NICHT (sorry, selbstverständlich mußte ich hier schreien). Wozu hast du denn weiter oben bereits im Header CSS eingebaut, wenn du es jetzt auf so _grausame_Weise_ mißachten willst?

    <a href="javascript:ZweiFrames('impressum-top.html','../online/impressum.html')">

    Und hier kann natürlich jeder Browser ins Rutschen kommen  -  sogar der IE.

    <img src="../images/copy.gif" width="127" height="36" border="0" onmouseover="this.src='../images/copyx.gif'" onmouseout="this.src='../images/copy.gif'"></a>

    upsa, jetzt sollen auch noch _innerhalb_ deines a-tags und zusätzlich _innerhalb_ des <img>-tags EventHandler ausgeführt werden. Sie stehen ganz einfach an der falschen Stelle. Korrekter wäre ungefähr sowas:
       <a href="frameseite.htm" onclick="ZweiFrames()">
    Wobei du den Bilderwechsel in deine Funktion mit hineinnehmen solltest.

    Es ist nicht ganz einfach, dir einen brauchbaren Hinweis zu geben. Prüfe mal nach, mit welchem Browser dein Code funktioniert oder eben nicht funktioniert  -  und vor allem: _sämtliche_ Broser (naja, Textbrowser fallen da raus) können dir nach entsprechenden Streicheleinheiten Javascriptfehler ziemlich genau protokollieren, sogar der IE. Warum schaust du dort nicht erstmal nach?

    Grüße aus Berlin

    Christoph S.

    1. Also ich hab das ganze schon mal erfolgreich in einer anderen HTML Datei umgesetzt und eigentlich nur kopiert, deswegen versteh ich jetzt auch net warum es auf einmal nicht mehr funktioniert. Ich hab da ein paar Sachen weggelassen und ein paar Sachen sind auch überflüssig, die ich einfach nur drin gelassen hab weil ich zu faul war! ;) Werde das aber noch korrigieren. Und ich kann dir auch sagen warum ich mein Problem in dieses Forum gepostet hab, weil ich wirklich nicht mehr weiter weiss und darauf vertraue das hier kompetente User vielleicht mein Problem erkannt haben. Natürlich weiss ich auch das es Besserwisser wie dich gibt die mich als nicht Profi überall dort fertig machen wo eben Nichtprofis fehler machen können! Also pack doch einfach mal dein Ego etwas zur Seite und versuch wirklich nützliche Tipps zu geben, auf eine Art und Weise die wirklich weiterhilft und nicht beleidigend und arrogant ist und wirkt, danke! Ein paar nützliche Tipps hattest ja auch, dafür bin ich dir auch dankbar. Leider konntest du auch mein Problem nicht lösen, aber wahrscheinlich wirst du jetzt eine selbstüberhebliche Antwort schreiben, die ich dann ignorieren werde, also lass es lieber oder hab halt spass dran! Wenn es dein Ego aufbauen sollte mach es halt, wird mir aber am A**** vorbei gehen.

      1. hallo Sven,

        Also ich hab das ganze schon mal erfolgreich in einer anderen HTML Datei umgesetzt

        Schön für dich.

        ich kann dir auch sagen warum ich mein Problem in dieses Forum gepostet hab, weil ich wirklich nicht mehr weiter weiss und darauf vertraue das hier kompetente User vielleicht mein Problem erkannt haben.

        Das habe ich, und ich denke, ich habe dir auch einen Lösungsweg gezeigt.

        Natürlich weiss ich auch das es Besserwisser wie dich gibt
        [...]
        Also pack doch einfach mal dein Ego etwas zur Seite

        Naja, da haben wir es mal wieder :-(

        und versuch wirklich nützliche Tipps zu geben

        Genau das habe ich getan.

        aber wahrscheinlich wirst du jetzt eine selbstüberhebliche Antwort schreiben, die ich dann ignorieren werde, also lass es lieber oder hab halt spass dran! Wenn es dein Ego aufbauen sollte mach es halt, wird mir aber am A**** vorbei gehen.

        No answer and no comment.

        keine Grüße aus Berlin

        Christoph S.

        1. Obwohl ich eigentlich dazu nichts schreiben wollte, tu ich es jetzt dennoch, auch wenn du es vielleicht nicht bemerkt hast, so Wörter wie "uups" und so kommen einfach überheblich rüber, vielleicht solltest du etwas an deiner Wortwahl arbeiten! Zudem hab ich schon selber ne Lösung gefunden!

          1. morgens Sven,

            Zudem hab ich schon selber ne Lösung gefunden!

            Ja, aber du hast nicht verstanden, daß das keine _echte_ Lösung ist und du hast nicht verstanden, _warum_ deine vorherige Konstruktion nicht funktionieren konnte. Das ist bedauerlich.

            Christoph S.

            1. Also meine Konstruktion funktioniert, das mit dem geschützen Namen wusste ich nicht, komisch nur das dir das zuvor nicht schon aufgefallen ist! Also aus deiner Weisheit werde ich nicht schlau, Sorry!