Günni: href - onclick

Morgen,
was ist besser bzw. wo liegen die Vor-/Nachteile?

document.write('<a href="javascript:void(0);" onclick="seiteOeffnen('abc');" ...

oder

document.write('<a href="" onclick="seiteOeffnen('abc'); return false;" ...

Für alle die's genauer wissen wollen:
Die Zeile wird sowieso nur geschrieben wenn JS aktiviert ist, daher ist das href unnötig (?). Beim Drüberfahren mit der Maus wird allerdings das href angezeigt. Dann ist "javascript:void(0);" nicht so schön. Auch href="abc" geht nicht, da dieser Link überhaubt nicht existiert.

Vielen Dank,
Günni

  1. Natürlich ginge auchnoch:

    document.write('<a href="javascript:seiteOeffnen('abc') ...

    1. @@Günni:

      document.write('<a href="javascript:seiteOeffnen('abc') ...

      Das ist Quatsch.

      Live long and prosper,
      Gunnar

      --
      „Das Internet ist ein großer Misthaufen, in dem man allerdings auch kleine Schätze und Perlen finden kann.“ (Joseph Weizenbaum)
      1. Hi,

        document.write('<a href="javascript:seiteOeffnen('abc') ...
        Das ist Quatsch.

        stimmt. Der von Dir vorgeschlagene Code ist aber auch nicht viel besser: Wozu ein <a>-Element, wenn keine Ressource verlinkt werden soll?

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Wozu ein <a>-Element, wenn keine Ressource verlinkt werden soll?

          Damit man das Element mit dem Tabulator erreichen und ausführen kann (auch ohne tabindex).

          1. Hi,

            Wozu ein <a>-Element, wenn keine Ressource verlinkt werden soll?
            Damit man das Element mit dem Tabulator erreichen und ausführen kann (auch ohne tabindex).

            es gibt auch andere Elemente, die dieses Verhalten aufzeigen. Einen Link, der nichts verlinkt, sehe ich deswegen nicht als gerechtfertigt an.

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. es gibt auch andere Elemente, die dieses Verhalten aufzeigen.

              Da lasse ich mein brain gerne erweitern. Welche?

              1. Hi,

                es gibt auch andere Elemente, die dieses Verhalten aufzeigen.
                Da lasse ich mein brain gerne erweitern. Welche?

                beispielsweise <button>, <input> und <select>.

                Cheatah

                --
                X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                X-Will-Answer-Email: No
                X-Please-Search-Archive-First: Absolutely Yes
        2. @@Cheatah:

          stimmt. Der von Dir vorgeschlagene Code ist aber auch nicht viel besser

          Stimmt. Ein '>' fehlte.

          Wozu ein <a>-Element, wenn keine Ressource verlinkt werden soll?

          Naja, die Benennung der Funktion 'seiteOeffnen' legt nahe, dass beim Click irgendeine andere Ressource angezeigt werden soll. (Wenn das mal ein Popup-Blocker nicht verhindert.)

          Sicher könnte man das auch als 'span' oder sonstwas auszeichnen; ich finde 'a' aber immer noch passend.

          Live long and prosper,
          Gunnar

          --
          „Das Internet ist ein großer Misthaufen, in dem man allerdings auch kleine Schätze und Perlen finden kann.“ (Joseph Weizenbaum)
          1. Hi,

            Naja, die Benennung der Funktion 'seiteOeffnen' legt nahe, dass beim Click irgendeine andere Ressource angezeigt werden soll. (Wenn das mal ein Popup-Blocker nicht verhindert.)

            okay, dann wäre aber ein <a href="..." onclick="seiteOeffnen(this.href);"> o.ä. angemessen :-)

            Sicher könnte man das auch als 'span' oder sonstwas auszeichnen; ich finde 'a' aber immer noch passend.

            Ohne entsprechendes href-Attribut mag ich dem inzwischen nicht mehr zustimmen.

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
        3. Hallo,

          Wozu ein <a>-Element, wenn keine Ressource verlinkt werden soll?

          Das halte ich für esoterischen Unsinn. (Ich fürchte, wir hatten die Diskussion schon einmal und ihr seid von der Hardcore-Fraktion.)

          Wenn ich in JavaScript das Verhalten und das Aussehen des bekannten UI-Patterns »Hyperlink« haben will, nehme ich <a href="javascript:..."> und fertig. Es besteht kein Grund, sich zu verkünsteln und andere Elemente umzuformatieren oder gar nur noch button-Elemente mit der herkömmlichen Darstellung zu verwenden.

          Es ist millionenfach bewährte Praxis, sowohl bei Ajax-Webanwendungen als auch im Unobtrusive JavaScript, dass man »Hyperlinks« einsetzt, die keine Ressource referenzieren, sondern beim Aktivieren bloß eine JavaScript-Funktion ausführen. Selbst manche Betriebssysteme und Desktop-Anwendungen verwenden aktivierbaren blauen Text mit Unterstrich. Mit Hypertext hat das wenig zu tun, aber das stört oder irritiert überhaupt nicht.

          Buttons und komplexere Controls haben in JavaScript-Anwendungen ebenfalls ihre Existenzberechtigung und wirklich scharf trennen kann man Buttons und »Links« nicht. Zum Beispiel bei den Google-Webanwendungen wie Google Reader gibt es sowohl massig blauen Text mit Unterstrich, als auch klassische Buttons. Aber es ist ein System darin, wann was gewählt wird, und das benutzt übrigens durchaus ein Konzept von »Ressource«.

          Mathias
          --
          SELFHTML aktuell Weblog

    2. Hallo,

      Natürlich ginge auchnoch:

      document.write('<a href="javascript:seiteOeffnen('abc') ...

      Das halte ich für die beste Lösung.

      Mathias

      1. Hi,

        document.write('<a href="javascript:seiteOeffnen('abc') ...

        Das halte ich für die beste Lösung.

        ich nicht.
        Zur Aktivierung einer reinen Javascript-Funktion würde ich Dir zustimmen, denn dann hätte man in der Statusleiste einen Hinweis darauf, was passieren wird.
        Aber "seiteOeffnen" klingt eindeutig nach einem Popup - und dieses möchte der User evtl. lieber in einem neuen Fenster oder Tab öffnen. Dazu ist aber ein echtes Linkziel erforderlich.

        freundliche Grüße
        Ingo

        1. Hallo,

          Ja, wenn die spezifischen Umstände bekannt sind, kann man spezifischere Lösungen suchen. Bis dahin sind alle Aussagen nur allgemein oder bedingt.

          Mathias

  2. @@Günni:

    was ist besser bzw. wo liegen die Vor-/Nachteile?
    document.write('<a href="javascript:void(0);" onclick="seiteOeffnen('abc');" ...
    oder
    document.write('<a href="" onclick="seiteOeffnen('abc'); return false;" ...

    Weder noch. Kein URI, also kein 'href'-Attribut.

    document.write('[code lang=html]<a onclick="[code lang=javascript]seiteOeffnen(\'abc\');"[/code]');[/code]

    Wenn’s denn 'document.write' sein soll, anstatt es vernünftig[tm] zu machen.

    Die Zeile wird sowieso nur geschrieben wenn JS aktiviert ist, daher ist das href unnötig (?).

    Eben.

    Live long and prosper,
    Gunnar

    --
    „Das Internet ist ein großer Misthaufen, in dem man allerdings auch kleine Schätze und Perlen finden kann.“ (Joseph Weizenbaum)