Markus: Javascript statt Cookie (Werte übergeben)

Hallo,

ich habe ein Webprojekt mit Frames.
Nun soll die Contentseite wissen, was der Anwender in der Navigation zuvor angeklickt hat.
Ich könnte den Wert in einem Cookie speichern und dann beim laden der Content-Seite diesen lesen. Ich würde das aber gerne per Javascript machen... geht das ?
Habe mir schon 'singletons' angeschaut... klappt so aber irgendwie nicht. Was ich also bräuchte, wäre eine 'frameübergreifende' gloable Variable, die ich in der Navigation setze und beim onload-Event der Content-Seite auslesen.... müsste doch machbar sein, oder ?

Schon mal Danke
Markus

  1. Hi,

    Klar geht das solange sich dein ganze Frameset auf dem gleiche domain befindet

    grundsätlich kannst du über die Objekteigenschaft frames des window Objektes auf alle darunterliegenden frames zugreifen. Desweiterem gibt es auch noch die Schlüsselwörter parent und top.

    definierst du nun in deiner navi leiste eine variable namens test also

    var test = 'test';

    könntest du diese aus deinem hauptfenster mit

    parent.frames[0].test

    aufrufen wenn dein navi frame das erste frame auf deiner seite ist

    aber unter http://de.selfhtml.org/javascript/objekte/frames.htm#allgemeines wird dieses auch sehr genau beschrieben

    Hoffe ich konnte damit deine frage beantworten

    gruss flo

    1. Hallo flo,

      werde es gleich mal versuchen.
      Aber geht das ganze z.B. auch mit einem Objekt ?, d.h. die erste (geladene) Seite erstellt ein 'globales' Objekt und füllt eine entsprechende Variable. Wird nun die 2. Seite geladen, schaut diese, ob das Objekt bereits vorhanden ist und liest dann die Variable aus, bzw. falls noch kein Objekt besteht, so erstellt die 2. Seite das Objekt.

      Aber schon mal Danke für die schnelle Antwort.
      Markus

      1. Aber geht das ganze z.B. auch mit einem Objekt ?

        Na klar das würde dann ungefähr so gehen

        if (parent.frames[0].myobj)
          test = parent.frames[0].myobj.myvar;
        else
          parent.frames[0].myobj.myvar = 'test';

        grüsse

        Flo

        1. if (parent.frames[0].myobj)
            test = parent.frames[0].myobj.myvar;
          else
            parent.frames[0].myobj.myvar = 'test';

          sry natürlich so

          if (parent.frames[0].myobj)
            test = parent.frames[0].myobj.myvar;
          else {
            parent.frames[0].myobj = {
              myvar : 'test'
            };
          }

          1. Danke Flo,

            läuft so einwandfrei und genau das was ich wollte !

            Da die Variable nicht immer existiert, habe ich es nun so gelöst:

            function searchArtistByName(key){
                if( typeof(parent.content.mediatype) == 'string' )
                {
             parent.content.location.href="filetable.html?mediatype=" + parent.content.mediatype +"&search=Artist&value="+key;
             }else{
             parent.content.location.href="filetable.html?mediatype=Audio&search=Artist&value="+key;
            }
            }

            Gruß & nochmals vielen Dank
            Markus

  2. Hi,

    versteh ich Dich richtig? du suchst einfach eine Frameuebergreifende Navigation? Also du moechtest in einem Naviframe etwas anklicken und in dem Contentframe wird das dann geladen?

    Wozu brauchst Du da Variablen oder Cookies? Du kannst, sofern die Seiten von der gleichen Quelle stammen, aus jedem Frame auf alles innerhalb des Framesets zugreifen. Wobei mir der Sinn einer solchen Aktion immer noch nicht klar ist. Erklaer doch bitte mal dein vorhaben etwas genauer. Was spricht denn dagegen einfach den Inhalt im Contentframe zu laden?

    Ueber deine Umsetzung mit frames, deren Nachteile und was ich davon halte, lass ich mich hier mal nicht mehr aus. Hat ja eh keinen Zweck... :( Irgendwo gibts nen Nest von Frame und Tabellenusern, die die Welt mit ihren Ideen verseuchen. Hab sonst keine Idee woher das alles kommt.

    1. @Steel
      Also hier noch einige Infos zu dem Projekt:

      Der Anwender klickt in der Navigation auf den Punkt 'a', hierdurch wird die Seite 'x' geladen.
      Klickt der Anwender jetzt auf einen Link in der Seite 'x' muss die Seite bzw. das Javascript wissen, das der Anwender zuvor auf 'a' geklickt hat (die Seite 'x' wird z.B. auch aufgerufen wenn der Anwender z.B. in der Navigation 'b' angeklickt hat... hier muss sie nun anders reagieren).

      Was Frames betrifft.... hatte es mit css versucht, war mir dann aber zu komplex bzw. zu kompliziert (die Seite ist eine Art iTunes auf Html-Basis).

      Gruß
      Markus

      1. Hi!

        Da rufste einfach Seite x auf und übergibst Parameter a. Fertich is die Schose.

        1. Danke Steel, Problem ist gelöst.
          Ich versuche eigentlich Parameter-Übergabe über die Url zu vermeiden, finde eine Lösung über Javascript persönlich etwas eleganter. Aber Url-Aufruf mit Parameter ist auf alle Fälle eine Alternative.

          Gruß & Danke
          Markus