Klaus Junge: Ist Event="javascript:... wichtig?

Hallo allerseits,

gestern hatten wir das 'return false;' bei Events am Wickel.
Und wie steht es eigentlich mit dem 'javascript:' im Aufruf?
Manche schreiben sehr konsequent Sachen wie:

onClick="javascript:tuwas()...

Es geht auch ohne, klar, aber wie wichtig wäre es, das
sauber durchzuhalten? Oder ist das ein Relikt aus den JS-
Anfangszeiten?
Beim W3C hab ich nichts dazu finden können.

Klaus

  1. Hi,

    onClick="javascript:tuwas()...

    ganz kurz: Das ist falsch. Wenn es funktioniert, liegt das an der Fehlerkorrektur des Browsers.

    Beim W3C hab ich nichts dazu finden können.

    JavaScript hat mit dem W3C auch nichts zu tun ;-)

    Cheatah

    1. Hallo Cheatah,

      ganz kurz: Das ist falsch.

      In der Kürze liegt die Würze!

      Wenn es funktioniert, liegt das an der Fehlerkorrektur des Browsers.

      Du hast recht. Ich dachte das so oft gesehen zu haben, daß ich es
      inzwischen auch geglaubt und für nicht falsch gehalten hatte.

      Jetzt hab' ich das doch in einem alten Netscape-Tutorial wiedergefunden.
      Es bezieht sich nur auf HREFs:

      Using JavaScript URLs
      ---------------------
      You should be familiar with the standard types of URLS:
      http, ftp, file, and so on. With Navigator you can also
      use URLs of type "javascript:" to execute JavaScript
      statements instead of loading a document.
      You simply use a string beginning with "javascript:"
      as the value for the HREF attribute of anchor tags.
      For example, you can define a hyperlink as follows:
      <A HREF="javascript:history.go(0)">Reload Now</A>

      JavaScript hat mit dem W3C auch nichts zu tun ;-)

      Naja, inhaltlich nicht so sehr, aber darüber auslassen tun
      die sich ja doch solange ich mich an das W3C erinnern kann:

      zB.

      18.2.1 The SCRIPT element

      <!ELEMENT SCRIPT - - %Script;          -- script statements -->
      <!ATTLIST SCRIPT
         charset     %Charset;      #IMPLIED  -- char encoding of linked resource --
         type        %ContentType;  #REQUIRED -- content type of script language --
         src         %URI;          #IMPLIED  -- URI for an external script --
         defer       (defer)        #IMPLIED  -- UA may defer execution of script --
         >
        
      usw. usf.

      Und irgendwo im Bereich http://www.w3.org/TR/ hatten sie auch mal
      ein Dokument in dem sie sich mit Scripting beschäftigten.
      Lag irgendwo thematisch dicht bei Stylesheets.

      Klaus

      1. Hallo Cheatah und Klaus,

        da habe ich gleich noch eine Frage zu:

        Jetzt hab' ich das doch in einem alten Netscape-Tutorial wiedergefunden.
        Es bezieht sich nur auf HREFs:
        Using JavaScript URLs

        You should be familiar with the standard types of URLS:
        http, ftp, file, and so on. With Navigator you can also
        use URLs of type "javascript:" to execute JavaScript
        statements instead of loading a document.
        You simply use a string beginning with "javascript:"
        as the value for the HREF attribute of anchor tags.
        For example, you can define a hyperlink as follows:
        <A HREF="javascript:history.go(0)">Reload Now</A>

        klar, javascript: mit einem Eventhandler zu kombinieren ist falsch, aber:

        so in etwa sieht doch ein Funktionsaufruf auf:

        <a href="#" "eventhandler: js-funktion"> oder
        <a href="#" "javascript: js-funktion">
                           ^^^°^°^°^°
                           manchmal

        Was eigentlich bedeutet das # im Wert? Und ist das javascript: als Funtionsaufruf im 2. bsp. auch falsch? Ich seh es jedenfalls  ab  und zu.

        Gruß von undine

        1. Hallo Undine,

          <a href="#"
          Was eigentlich bedeutet das # im Wert?

          au Backe, da rüttelst Du ja an den Fundamenten.
          Schau auch mal in SelfHTML unter Verweisen nach.

          Ich benutze das entweder als lokale Referenz oder
          als Subreferenz innerhalb einer externen URL.

          Du kennst doch <a name="Zieldef">
          Damit definierst Du eine referenzierbare Marke innerhalb eines Dokumentes.

          1. Lokale Referenz
          Wenn Du solch eine Definition hast, kannst Du innerhalb des aktuellen
          Dokumentes mit:
          <a href="Zieldef">Verweistext</a>
          an die besagte Stelle springen.

          2. Externe Referenz
          Wenn sich die betreffende Marke in einem anderen Dokument befindet,
          dann lautet der Verweis:
          <a href="externurl.html#Zieldef">Verweistext</a>
          Die üblichere Variante
          <a href="externurl.html">Verweistext</a>
          meint dann nur 'top_of_document.

          Mit <a href="#" liegt also irgendeine Krüppelform davon vor.
          Eigentlich sagst Du dem Browser lediglich, daß er nicht im Netz
          weitersuchen und gefälligst innerhalb des Dokumentes bleiben soll.
          Tatsächlich hab' ich auch schon beobachtet, daß Browser dann ans
          Ende der Seite springen. Die finden die Markendefinition halt nicht.
          Verhindern kann man das dann mit 'return false;' im
          Eventhandler (onClick).

          Sauberer ist aber wohl der Konstrukt:
          <a name="HierHin">
          <a href="HierHin">Verweistext</a>

          Alle Klarheiten zerredet?

          <a href="#" "eventhandler: js-funktion"> oder
          <a href="#" "javascript: js-funktion">
          Und ist das javascript: als Funtionsaufruf im 2. bsp. auch falsch?
          Ich seh es jedenfalls  ab  und zu.

          Würde ich kurz und würzig als falsch einordnen.
          Mit sowas wie
          <a href="javascript:js-funktion"> oder
          <a href="#" onClick="js-funktion; return false;"> oder
          <a name="HierHin">
          <a href="HierHin" onClick="js-funktion; return false;">Verweistext</a>
          könnte ich mich eher anfreunden.
          Irgendwie sind mir bei Deinem Beispiel zuviele versprengte
          Gänsefüßchen oder zuwenig Eventhandler vorhanden.

          Klaus

          1. Hallo Undine,

            hab's denn doch vermasselt. Vor der Zieldef fehlt das #.
            ..........
            1. Lokale Referenz
            Wenn Du solch eine Definition hast, kannst Du innerhalb des aktuellen
            Dokumentes mit:
            <a href="#Zieldef">Verweistext</a>
            ............^

            Klaus

            PS: irgendwo kneift die Übertragung zum Forum gerade.

          2. Hallo Klaus,

            also erstmal vielen vielen Dank für Deine ausführliche Antwort. Ich habe einfach nicht richtig nachgedacht, das muß ich hier wohl zugeben. Die Sachen mit den Verweisen und Ankern mach ich schon ne ganze Weile, und in SELFHTML steht dazu ".....Dem Namen müssen Sie ein # voranstellen...." . Hab ich einfach immer gemacht und mich nie gefragt warum - bis zu Deinem Posting hier. So nach dem Motto: Warum mach ich das nun eigentlich immer?

            Alle Klarheiten zerredet?

            Nö, jetzt ist mal alles schön geordnet!

            <a href="#" "eventhandler: js-funktion"> oder
            <a href="#" "javascript: js-funktion">
            Und ist das javascript: als Funtionsaufruf im 2. bsp. auch falsch?
            Ich seh es jedenfalls  ab  und zu.

            Würde ich kurz und würzig als falsch einordnen.
            Mit sowas wie
            <a href="javascript:js-funktion"> oder
            <a href="#" onClick="js-funktion; return false;"> oder
            <a name="HierHin">
            <a href="HierHin" onClick="js-funktion; return false;">Verweistext</a>
            könnte ich mich eher anfreunden.
            Irgendwie sind mir bei Deinem Beispiel zuviele versprengte
            Gänsefüßchen oder zuwenig Eventhandler vorhanden.

            Jetzt, wo Du das so sagst.... Also, ist mir richtig peinlich, da muß ich mal was erklären.  Ich denke mal, es kommt daher, weil ich immer mit Homesite arbeite. Da wird ja praktisch alles vorgegeben. Du mußt nur wissen was wann wie wo hinkommt. Sobald Du einen Fehler machst, kriegen alle Tags ne falsche Farbe und - hee presto - ich weiß sofort: Flüchtigkeitsfehler. Das ist superpraktisch, aber sowas wie Programmierkompetenz oder syntaktische/morphologische Kompetenz (heißt das in der Computerlinguistik überhaupt so? Bei mir in der Linguistik wäre es jedenfalls treffend) wird damit natürlich nicht gerade gefördert....

            Grüße von Undine