Simon Gude: Link / Verweise auf sich selbst (_self) - Problem!?!

Hallo liebes Forum!

Ich hab da wieder mal ein Prob, welches gelöst werden will.

Also, im folgendem Script erhalte ich aus einem Frame (rechts) immer ein value geliefert (über ein hidden Formular). Der Inhalt des value ist entwerder ein neues Sprungziel in Form einer html Datei, oder er hat den Wert "leer" - für kein Sprungziel.

Es wird im dem Script überprüft ob der Übergabewert "leer" ist, wenn ja, soll der aus der Javascriptfunktion erstellte Link auf sich selbst verweisen. Wenn nicht, soll die übergebene html Datei als Link dargestellt werden.

Das klappt ja alles schon super, nur ...

und da ist auch schon das Problem! So wie ich es mir vorgestellt habe, nämlich mit dem Übergabewert "leer" und  "parent.rechts.location.href= '_self';" geht es nicht,

Er scheint das '_self' weder in '' noch in "", oder sonst irgendwie  zu akzeptieren. Wieso?!

Bitte helft mir! Danke schon mal für die Antworten!

Bis dennne Simon

script:
-------

<script language="JavaScript" type="text/javascript">
function Seite(){
if(parent.rechts.document.form.ziel.value=="leer")
 {
 alert("leer als Übergabewert");
 <!--
 parent.rechts.location.href= '_self';
 -->
 }
else {
 parent.rechts.location.href=parent.rechts.document.form.ziel.value;
 }
}
</script>

linkaufruf:
-----------

<a href="javascript:Seite()">Link</a>

  1. Moin!

    und da ist auch schon das Problem! So wie ich es mir vorgestellt habe, nämlich mit dem Übergabewert "leer" und  "parent.rechts.location.href= '_self';" geht es nicht,

    Er scheint das '_self' weder in '' noch in "", oder sonst irgendwie  zu akzeptieren. Wieso?!

    Zwei dumme Fragen dazu:

    1. Du willst also, wenn man auf den Link klickt, und das Feld leer ist, das nichts passiert? Warum programmierst du das dann nicht einfach?

    2. Findest du es gut, dass du dich - so wie ich das sehe vollkommen unnötig - in der Navigation von Javascript abhängig machst? Welche Vorteile hat dein Vorgehen eigentlich gegenüber dem simplen Verlinken? Du mußt jetzt das versteckte Formularfeld ändern - ohne Javascript müßtest du den wirklichen Link ändern - und könntest ihn im Zweifel entfernen, wenn er funktionslos ist.

    - Sven Rautenberg

    --
    SELFTREFFEN 2003 - http://selftreffen.kuemmi.ch/
    ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|
    1. Hi Sven!

      Zwei dumme Fragen dazu:

      1. Du willst also, wenn man auf den Link klickt, und das Feld leer ist, das nichts passiert? Warum programmierst du das dann nicht einfach?

      Naja, der Link darf nicht leer sein. Er muss auf sich selbst verweisen. Ja, aber letzlich soll nichts passieren, wenn man den Link anklickt! Ich muss aber definitiv ein Wert an die Javascript Funktion übergeben, sonst ist sie ja undefiniert!

      Ich kann mir dass nur so vorstellen, was du meinst: man klickt auf den Link und es passiert was, was mit einem Link absolut nichts zu tun hat. Wie, es wird von 0 bis 10 gezählt und das wars. Oder was meinst du?!

      1. Findest du es gut, dass du dich - so wie ich das sehe vollkommen unnötig - in der Navigation von Javascript abhängig machst?

      Naja, das ist Design bedingt nur so machbar. Einen Link in den Frame reinzubastel sieht echt doof aus.

      Du mußt jetzt das versteckte Formularfeld ändern - ohne Javascript müßtest du den wirklichen Link ändern - und könntest ihn im Zweifel entfernen, wenn er funktionslos ist.

      Ja klar! In jeder html Datei, die eine weitere html Datei übergibt muss das versteckt Formular angepasst werden. Aber in html Dateien, die keine weitere Seite übergeben muss eben "leer" übergeben werden.

      Der "wirkliche Link" wie du meinst, muss/kann sich bei jeder html Datei, die im Frame angezeigt wird, ändern. Dieser "wirkliche Link" ist also nie statisch.

      Alles klar?! ;)

      Simon

      1. Moin!

        1. Du willst also, wenn man auf den Link klickt, und das Feld leer ist, das nichts passiert? Warum programmierst du das dann nicht einfach?

        Naja, der Link darf nicht leer sein. Er muss auf sich selbst verweisen. Ja, aber letzlich soll nichts passieren, wenn man den Link anklickt! Ich muss aber definitiv ein Wert an die Javascript Funktion übergeben, sonst ist sie ja undefiniert!

        Ich kann mir dass nur so vorstellen, was du meinst: man klickt auf den Link und es passiert was, was mit einem Link absolut nichts zu tun hat. Wie, es wird von 0 bis 10 gezählt und das wars. Oder was meinst du?!

        Du bist auf der richtigen Spur.

        Nur frage ich mich: Wenn du von 0 bis 10 zählen willst, warum dann nicht von 0 bis 9 - das geht schneller. Oder gar nur von 0 bis 1. Oder von 0 bis 0. Oder gar nicht.

        Hast du schon mal eine Schleife programmiert, die nichts tut, die sogar gar nicht da ist? Wo einfach nichts passiert, weil kein Code vorhanden ist, der irgendetwas tun könnte.

        Das meinte ich mit "Programmiere etwas, das nichts tut."

        1. Findest du es gut, dass du dich - so wie ich das sehe vollkommen unnötig - in der Navigation von Javascript abhängig machst?

        Naja, das ist Design bedingt nur so machbar. Einen Link in den Frame reinzubastel sieht echt doof aus.

        Wieso? Du hast jetzt einen Link, der <a href="javascript:funktion()"> macht. Was hindert dich daran, stattdessen <a href="zielseite.htm"> reinzuschreiben? Das funktioniert ohne Javascript in jedem Browser.

        Und wenn die letzte Seite erreicht ist, bleibt der Link eben weg - ist nämlich blöd, wenn man einen Link klickt, der nichts tut. Man denkt, der eigene Browser wäre kaputt, oder die Maus.

        Du mußt jetzt das versteckte Formularfeld ändern - ohne Javascript müßtest du den wirklichen Link ändern - und könntest ihn im Zweifel entfernen, wenn er funktionslos ist.

        Ja klar! In jeder html Datei, die eine weitere html Datei übergibt muss das versteckt Formular angepasst werden. Aber in html Dateien, die keine weitere Seite übergeben muss eben "leer" übergeben werden.

        Der "wirkliche Link" wie du meinst, muss/kann sich bei jeder html Datei, die im Frame angezeigt wird, ändern. Dieser "wirkliche Link" ist also nie statisch.

        Alles klar?! ;)

        Nein. Absolut nicht. Ich sehe den Sinn nicht. Ich sehe, was deine Funktion macht, und ich kann aus meiner Erfahrung sagen: Sowas geht auch einfacher und kompatibler mit HTML-Standardmethoden, wie oben dargelegt. Weil dein Wartungsaufwand identisch ist. Ob du nun den Link änderst, oder das Hidden-Feld, ist wirklich egal.

        - Sven Rautenberg

        --
        SELFTREFFEN 2003 - http://selftreffen.kuemmi.ch/
        ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|
        1. Alles klar?! ;)

          Nein. Absolut nicht. Ich sehe den Sinn nicht. Ich sehe, was deine Funktion macht, und ich kann aus meiner Erfahrung sagen: Sowas geht auch einfacher und kompatibler mit HTML-Standardmethoden, wie oben dargelegt. Weil dein Wartungsaufwand identisch ist. Ob du nun den Link änderst, oder das Hidden-Feld, ist wirklich egal.

          schau mal hier, dann weisst du was ich meine (http://217.238.105.85). der server läuft bis ca. 20uhr, dann ist schluß ;) (nur für testzwecke!!)

          und nochmal zur verständnis:

          der frame wo die html reingeladen wird, bring automatisch die nächste html mit (nämlich im hidden formular), weil nicht aller text in den frame geht. soweit ok?!

          dieser wert, also die nächste html wird ausserhalb des frames an eine javascript funktion üergeben. diese macht auch ausserhalb es frames einen link, der dann die übergebene html datei enthält. man blättert also im frame über einen link der ausserhalb des frames liegt!

          damit erspare ich mir nur, dass ich keinen link innerhalb der html datei, die im frame angezeigt wird, anzeigen muss. es wird immer nur ein link zum blättern genutzt. nämlich der, der ausserhalb liegt.

          um dass jetzt alles zu verstehen -> http://217.238.105.85

          simon

    2. Hi Sven!

      Habe also nun bei if zwischen den {} alles leer gelassen. Geht erstmal so ... tja. Oft sind die simplen Dinge am schwersten!

      Simon

  2. Ja, aber viel interessanter und auch für mich WICHTIG:

    warum geht das parent.rechts.location.href=_self; nicht?!