mathefritz: href = Link aus jsFunktion ReturnWert

meine eigentlich das schon mal funktionsfähig geschafft zu haben oder
geht das wirklich nicht?

  1. Hallo,

    meine eigentlich das schon mal funktionsfähig geschafft zu haben oder
    geht das wirklich nicht?

    mal so im ganzen Satz, oder: Bahnhof?

    Gruß
    Kalk

    1. Danke: Ok, hoffe, das folgende ist verständlicher. <a href = "javascript: 'linker(p1,p2,...)';" ...> linktext </a>
      wie, genau muß, nun der von function linker erzeugte Rückgabewert beschaffen sein damit ein Klick auf den Linktext die Webseite aus dem Rückgabewert aufruft?
      Allerdings
      scheint mir im speziellem Fall die direkte Angabe des href Parameters einfacher. Wirkliche Vereinfachung brächte vielleicht eine dynamische Erzeugung der '<a ...' Elemente der Seite mit createElement

      1. In der Spec steht:

        The href attribute on a hyperlink element must have a value that is a URI (or IRI). This URI is the destination resource of the hyperlink.

        javascript:blabla(); kann man vermutlich als URI zum Schema javascript auffassen, deshalb ist dein Vorgehen Spec-konform.

        Allerdings definierst Du auf diese Weise, dass der Link zur JavaScript Funktion führt. Und deshalb wird die JavaScript-Funktion ausgeführt, wenn Du auf den Link klickst. Dass ihre Rückgabe zu verarbeiten ist, davon steht nichts in der Spec. Deshalb musst Du die Verlinkung selbst durchführen.

        Der naive Ansatz dazu wäre document.location="...", das missachtet allerdings Attribute des Anchor-Elements, die das Navigationsverhalten beeinflussen (z.B. target="_blank"). Das müsstest Du alles nachbauen - es sei denn es gibt einen mir unbekannten Trick, das eleganter zu lösen.

        Aber ich würde dieses Vorgehen vermeiden wollen. Du kannst auch per JavaScript den Wert des Anchor-Tags direkt setzen, so dass es den gewünschten Wert enthält, und dann dem Browser das korrekte Handling des Klicks auf den Link überlassen. Das ist natürlich etwas umständlicher, vor allem dann, wenn es viele mögliche Auslöser für einen Update des href Attributs gibt.

        Rolf

      2. Tach!

        <a href = "javascript: 'linker(p1,p2,...)';" ...> linktext </a>
        wie, genau muß, nun der von function linker erzeugte Rückgabewert beschaffen sein damit ein Klick auf den Linktext die Webseite aus dem Rückgabewert aufruft?

        Wenn linker eine Funktion wäre, müsste sie false zurückgeben und location.href ändern. Aber du hast da keinen Funktionsaufruf, sondern ein Stringliteral geschrieben, dessen Inhalt lediglich wie ein Funktionsaufruf aussieht. Zudem wäre wohl ein click-Handler die bessere Variante.

        dedlfix.

        1. Danke, ja mit href = 'javascript: linker(...)' und window.location = ...; return false; klappt es,
          allerding bringt diese Konstruktion eher mehr als weniger Schreibaufwand, es wird wohl bei direkter Link-Angabe bleiben, oder einem Skript das nach laden der Seite alle diese '<a'-Elemente mit createElement aufbaut und ... einbindet.

  2. Moin mathefritz,

    vollständige Sätze und zielgerichtete Fragen helfen bei der Beantwortung ungemein.

    Viele Grüße
    Robert

    1. Danke; siehe Antwort an Tabellenkalk.