nam: Unterstützung von JavaScript-Versionen

Hi

Firefox 3 bringt JavaScript 1.8 (http://developer.mozilla.org/en/docs/New_in_JavaScript_1.8).

Gibt es igendwo eine Übersicht, welche Browser mit welchen Versionen welche JavaScript-Versionen unterstützen?

Oder kann mich jemand sonst wie mit Input versorgen?

Danke,
Mathias

  1. Hallo

    Vielleicht hilft dir das weiter

    <html>
     <head>
      <title>JavaScript</title>
     </head>
     <body bgcolor="#FFFFFF" text="#000000" link="#0000FF"  vlink="#800080" alink="#FF0000">
      <script language="javascript">
       window.document.write("Der Browser unterstützt JavaScript<HR>");
      </script>
      <script language="javascript1.1">
       window.document.write("Der Browser unterstützt JavaScript v1.1<HR>");
      </script>
      <script language="javascript1.2">
       window.document.write("Der Browser unterstützt JavaScript v1.2<HR>");
      </script>
      <script language="javascript1.3">
       window.document.write("Der Browser unterstützt JavaScript v1.3<HR>");
      </script>
      <script language="javascript1.4">
       window.document.write("Der Browser unterstützt JavaScript v1.4<HR>");
      </script>
      <script language="javascript1.5">
       window.document.write("Der Browser unterstützt JavaScript v1.5<HR>");
      </script>
     </body>
    </html>

    Kopiers mal in einen Editor um es besser lesen zu können!

    mfg Florian

    1. Hallo Florian

      Cool, danke, damit kann ich mir die Liste selber zusammenstellen.

      (Habs noch erweitert:

        
      <html>  
       <head>  
        <title>JavaScript</title>  
       </head>  
       <body bgcolor="#FFFFFF" text="#000000" link="#0000FF"  vlink="#800080" alink="#FF0000">  
        <script language="javascript">  
         window.document.write("Der Browser unterstützt JavaScript<HR>");  
        </script>  
        <script language="javascript1.1">  
         window.document.write("Der Browser unterstützt JavaScript v1.1<HR>");  
        </script>  
        <script language="javascript1.2">  
         window.document.write("Der Browser unterstützt JavaScript v1.2<HR>");  
        </script>  
        <script language="javascript1.3">  
         window.document.write("Der Browser unterstützt JavaScript v1.3<HR>");  
        </script>  
        <script language="javascript1.4">  
         window.document.write("Der Browser unterstützt JavaScript v1.4<HR>");  
        </script>  
        <script language="javascript1.5">  
         window.document.write("Der Browser unterstützt JavaScript v1.5<HR>");  
        </script>  
        <script language="javascript1.6">  
         window.document.write("Der Browser unterstützt JavaScript v1.6<HR>");  
        </script>  
        <script language="javascript1.7">  
         window.document.write("Der Browser unterstützt JavaScript v1.7<HR>");  
        </script>  
        <script language="javascript1.8">  
         window.document.write("Der Browser unterstützt JavaScript v1.8<HR>");  
        </script>  
       </body>  
      </html>  
      
      

      Womit mich <irony>dank MS IE alles über Version 1.3 nicht zu kümmern braucht.</irony>

      Danke und Gruss,
      Mathias

      1. Hi,

        Cool, danke, damit kann ich mir die Liste selber zusammenstellen.

        _Der_ Liste würde ich nicht vertrauen. Ließ am Besten mal diesen SelfHTML-Artikel, beschäftige dich dann eventuell mit dieser Tabelle und gewöhn dich an den Weg von Cybaer. :)
        Gruß,
        Felix

        --
        Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jedermann ist überzeugt, dass er genug davon habe.
        René Descartes
        1. Bei http://www.webdevout.net/browser-support-dom gehts um den DOM-Support, mich interessieren die Sprachkonstrukte.

          und gewöhn dich an den Weg von Cybaer.

          Da bin ich dran :-/

  2. Hi,

    Gibt es igendwo eine Übersicht, welche Browser mit welchen Versionen welche JavaScript-Versionen unterstützen?

    welche Erkenntnisse erhoffst Du Dir aus derlei Informationen?

    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. welche Erkenntnisse erhoffst Du Dir aus derlei Informationen?

      1. Wissen
      2. Wissen, welche Features ich verwenden kann

      Gruss

      1. Hi,

        1. Wissen, welche Features ich verwenden kann

        Dann frag doch ab, ob das Feature vorhanden ist. Wenn es ist, kannst Du es auch nutzen. Wenn nicht, dann, ähm, nicht. ;-)

        Das funktioniert so ab JS 1.0 ...

        Gruß, Cybaer

        --
        Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
      2. Grütze .. äh ... Grüße!

        welche Erkenntnisse erhoffst Du Dir aus derlei Informationen?

        1. Wissen
        2. Wissen, welche Features ich verwenden kann

        In der "moderneren" Javascript-Programmierung wird die Verfügbarkeit eines Features  abgefragt, bevor es genutzt wird, daher ist es (meist [1] ) unerheblich, welcher Browser das Script abarbeitet.


        Kai

        [1] Ausnahme wäre z.B. eine Funktion, die nur in einem bestimmten Browser laufen soll, aber nur Features nutzt, die auch in anderen Browsern verfügbar sind...

        --
        What is the difference between Scientology and Microsoft? One is an
        evil cult bent on world domination and the other was begun by L. Ron
        Hubbard.
        ie:{ fl:( br:< va:) ls:? fo:| rl:? n4:° ss:{ de:] js:| ch:? mo:| zu:|
        1. Hi

          In der "moderneren" Javascript-Programmierung wird die Verfügbarkeit eines Features  abgefragt, bevor es genutzt wird[…]

          Das ist mir klar und bei Dingen wie z.B. getElementsByClassName mach ich das auch so.
          Aber wie frage ich ab, ob zum Beispiel ein Konstrukt wie

            
          function bar() {  
              return[1,2];  
          }  
          var a,b;  
          [a,b]=bar();  
          
          

          funktioniert und keinen ReferenceError auslöst?

          1. Hi,

            funktioniert und keinen ReferenceError auslöst?

            Mit try...catch.

            OK, und woher weiß man, daß der Browser try...catch beherrscht? ;->

            Also wenn alles nichts hilft, dann frage ich hilfweise Konstrukte ab, die in der betreffenden JS-Version ebenfalls eingeführt wurden. Das sieht dann so aus:

            agt_jsVersion=(Array.reduce)?1.8:(window.Iterator)?1.7:(Array.filter)?1.6:(document.getElementById)?1.5:(doc_time.getFullYear)?1.3:(window.screen)?1.2:(document.images)?1.1:1.0;

            Gruß, Cybaer

            --
            Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
            1. Ja ja, Copy'n'Paste! =;-)

              agt_jsVersion=(Array.reduce)?1.8:(window.Iterator)?1.7:(Array.filter)?1.6:(document.getElementById)?1.5:(doc_time.getFullYear)?1.3:(window.screen)?1.2:(document.images)?1.1:1.0;

              doc_time ist bei mir natürlich vorher definiert worden: doc_time=new Date();

              Wenn man das nicht braucht, kann man natürlich auch einfach abfragen auf (new Date()).getFullYear ... ;-)

              Gruß, Cybaer

              --
              Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
            2. agt_jsVersion=(Array.reduce)?1.8:(window.Iterator)?1.7:(Array.filter)?1.6:(document.getElementById)?1.5:(doc_time.getFullYear)?1.3:(window.screen)?1.2:(document.images)?1.1:1.0;

              Und damit hast du gleich auch die Variante der Abfrage über das language-Attribut lügen gestraft (Safari lügt da nämlich, wenn er sagt er könne 1.7, dann aber return [1,2] als Fehler bezeichnet; umgekehrt gibt sich z.B. IE6 zu bescheiden).

              Danke.

              1. Hi,

                Und damit hast du gleich auch die Variante der Abfrage über das language-Attribut lügen gestraft

                Die hat sowieso noch nie richtig funktioniert, und wird es auch in Zukunft nicht.

                Man kann (bzw. muß) die Versionangabe in den Attributen (früher LANGUAGE, jetzt TYPE) praktisch nur dazu verwenden, dem Browser mitzuteilen, nach welchem Standard man programmiert. Je nach Angabe interpretiert die JS-Engine den Code ggf. anders. Das war schon beim Sprung von 1.0 auf 1.1 so (da hat sich das Handling der Arrays geändert und wird je nach Angabe entsprechend interpretiert), und bei den neuen Versionen wird es wieder so sein (steht ja auch auf der von dir verlinkten Seite).

                Gruß, Cybaer

                --
                Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
              2. Hallo,

                Und damit hast du gleich auch die Variante der Abfrage über das language-Attribut lügen gestraft (Safari lügt da nämlich, wenn er sagt er könne 1.7, dann aber return [1,2] als Fehler bezeichnet; umgekehrt gibt sich z.B. IE6 zu bescheiden).

                language ist irrelevant, folgendes sollte maßgebend sein:

                <script type="application/javascript;version=1.7"/>

                Siehe http://developer.mozilla.org/en/docs/New_in_JavaScript_1.7

                Ich glaube nicht, dass irgendein Browser das so gekennzeichnete Script ausführt, wenn er nicht JS 1.7 kennt?!

                Mathias

                1. Hi,

                  Ich glaube nicht, dass irgendein Browser das so gekennzeichnete Script ausführt, wenn er nicht JS 1.7 kennt?!

                  Ja, das hat schon bei language="JavaScript1.3" & Co. hervorragend geklappt! Aber optimistische Menschen braucht die Wirtschaft! ;-)

                  Gruß, Cybaer

                  --
                  Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
          2. Hallo,

            Aber wie frage ich ab, ob zum Beispiel ein Konstrukt wie

            function bar() {
                return[1,2];
            }
            var a,b;
            [a,b]=bar();

            
            > funktioniert und keinen ReferenceError auslöst?  
              
            Schön, was machst du, wenn es einen auslöst? Ihn abfangen. Und dann?  
              
            a) Script geordnet abbrechen → sehr unschön. Dazu braucht man try-catch nicht - das Script bricht auch von selbst ab, nur mit einem JavaScript-Fehler. Der sagt dem User zumindest, dass ein Script abgebrochen wurde.  
              
            b) Alternative Umsetzung probieren → sehr blöd, weil man alles doppelt programmieren muss.  
              
            Ich weiß nicht, welchen Sinn es hat, JS 1.7 zu verwenden und dann irgendwie abwärtskompatibel arbeiten zu wollen - und sei es nur durch ein Abfangen der Fehler.  
              
            Mathias
            
            -- 
            [SELFHTML aktuell Weblog](http://aktuell.de.selfhtml.org/weblog/)
            
            1. Hi an alle

              Ich weiß nicht, welchen Sinn es hat, JS 1.7 zu verwenden und dann irgendwie abwärtskompatibel arbeiten zu wollen - und sei es nur durch ein Abfangen der Fehler.

              Das ist ja das, was ich eigentlich wissen wollte: Welche JavaScript-Version ist unter den wichtigsten Browsern der grösste gemeinsame Nenner?
              Bzw.: Hat es einen Sinn die Funktionalitäten von JS1.7 zu lernen?

              Dafür such(t)e ich eine Liste, die aufzeigt, welche Browser welche JS-Funktionen/Versionen unterstützen.
              Nur kamen dann Antworten, die mir nichts nützen, weil es mir nicht darum geht, welche DOM-Objekte ein Browser zu Verfügung stellt. Z.B.:

              In der "moderneren" Javascript-Programmierung wird die Verfügbarkeit eines Features  abgefragt, bevor es genutzt wird[…]

              Das weiss ich, das kann ich, das tu ich. - Steht aber hier nicht zur Debatte.

              Um mir einen Überblick zu verschaffen ist der Ansatz von florian nicht schlecht, nur hat er sich als unzuverlässig erwiesen.

              Also was mir vorschwebt: ein test.html, dass die JavaScript(Core, nicht DOM!!)-Unterstützung der verschiedenen Browser(-Versionen) ausgibt und auch einigermassen "zukunftsstabil" ist, d.h. auch in einem Jahr noch funktioniert, vielleicht mit kleinen Anpassungen. Also ähnlich wie beim Verfügbarkeitstest von DOM-Funktionen, nur eben für Sprachkonstrukte wie getter/setter, let, yield und so weiter.

              Ich suche eine Idee, wie ich das selber schreiben könnte oder eine Seite im Netz, die das schon macht.
              try...catch ist ja mal ein Ansatz, da werd ich mich jetzt mal dahinterklemmen…

              Gruss,
              namt

              1. Hi,

                Das ist ja das, was ich eigentlich wissen wollte: Welche JavaScript-Version ist unter den wichtigsten Browsern der grösste gemeinsame Nenner?

                1.5

                Bzw.: Hat es einen Sinn die Funktionalitäten von JS1.7 zu lernen?

                Global: IMHO keinen. Selbst im Intranet würde ich nicht ohne Not "proprietär" (und sei es nur temporär) programmieren wollen.

                Aber für Leute, die mit/für den Firefox selbst programmieren (Bookmarklets, Greasemonkey, ...), denen kann der nicht-kompatible Rest ja echt sowas von egal sein ... :)

                Gruß, Cybaer

                --
                Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
              2. Hallo,

                Das ist ja das, was ich eigentlich wissen wollte: Welche JavaScript-Version ist unter den wichtigsten Browsern der grösste gemeinsame Nenner?

                ECMAScript!

                Bzw.: Hat es einen Sinn die Funktionalitäten von JS1.7 zu lernen?

                Wie Cybaer sagt, für das öffentliche Web, das auf verschiedenen Browsern laufen soll, nein.

                Allgemein empfehle ich dir die Lektüre des Artikels JavaScript und Webstandards.

                Es hat m.E. wenig Sinn, in "JavaScript-Versionen" zu denken, denn im Grunde genommen gibt es keine JavaScript-Versionen mehr. Die gab es, als noch Netscape JavaScript herausgegeben hat und Microsoft und andere Hersteller sie implementiert haben - d.h. Mitte der Neunziger, bevor eine Standardisierung passierte, bevor das DOM erfunden wurde und so weiter.

                Die Grundlage von JavaScript ist der Standard ECMAScript, und alle Browser implementieren weitesgehend dessen Spezifikation. Das ist die sichere Grundlage, auf die man in puncto Sprachkonstrukte bauen kann. Alles weitere ist unsicher, darunter die proprietären Erweiterungen von Mozilla ("JavaScript 1.6" und "JavaScript 1.7"). Und daran wird sich auch in naher Zukunft nichts grundlegend ändern.

                Klar, man kann Testseiten mit try...catch schreiben, die einem zeigen, ob bestimmte proprietäre Sprachkern-Erweiterungen implementiert wurden. Das ist theoretisch interessant, gibt aber m.M.n. keine Anleitung für die Praxis.

                ECMAScript als solches wird von einem Gremium weiterentwickelt, aber diese vierte Edition ist derzeit noch Zukunftsmusik. Wenn man zukunftssichere Scripte schreiben will, dann sollte man sich an ECMAScript (Edition 3) halten. Das umfasst all die Sprachkonstruktore, die allgemein unter JavaScript 1.5 laufen (siehe Artikel).

                Mathias

      3. Hi,

        welche Erkenntnisse erhoffst Du Dir aus derlei Informationen?

        1. Wissen

        ein guter Entwickler weiß, über welches Wissen er verfügt. Ein sehr guter Entwickler weiß, über welches Wissen er _nicht_ verfügt. Und ein hervorragender Entwickler weiß, was er gar nicht erst wissen muss. Dies hier gehört eindeutig zu Letzterem.

        1. Wissen, welche Features ich verwenden kann

        Direkt prüfbar und ohne jeden Zusammenhang zu einer JavaScript-Version.

        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. ein guter Entwickler weiß, über welches Wissen er verfügt. Ein sehr guter Entwickler weiß, über welches Wissen er _nicht_ verfügt. Und ein hervorragender Entwickler weiß, was er gar nicht erst wissen muss. Dies hier gehört eindeutig zu Letzterem.

          Das einzige was ich zu entwicklen versuche, sind meine verwirrten Gedanken;-)
          Wieso soll ich das nicht wissen müssen/dürfen?
          Es lohnt sich doch zu wissen, dass kein Browser ausser Firefox so was schönes wie »destructuring assignments«, let, yield etc. unterstützt. Das heisst für mich dann, dass ich diese Syntax (noch) nicht lernen muss.

          Direkt prüfbar und ohne jeden Zusammenhang zu einer JavaScript-Version.

          Wie denn? Es geht mir nicht um den DOM-Support! (siehe https://forum.selfhtml.org/?t=164149&m=1069510)

          Gruss,
          nam

          1. Hi,

            Das einzige was ich zu entwicklen versuche, sind meine verwirrten Gedanken;-)

            dann habe ich einen Tipp für Dich: Halte alle Katzen außer Reichweite ;-)

            Wieso soll ich das nicht wissen müssen/dürfen?

            Es bringt Dich exakt so weit wie das Wissen um den Umstand, dass die durchschnittliche Austrittsgeschwindigkeit von Ketchup aus der Flasche 40 Kilometer pro Jahr beträgt.

            Es lohnt sich doch zu wissen, dass kein Browser ausser Firefox so was schönes wie »destructuring assignments«, let, yield etc. unterstützt.

            Ja. Es ist aber absolut uninteressant zu wissen, welcher Browser die von ihm unterstützte JavaScript-Version "1.5" nennt.

            Das heisst für mich dann, dass ich diese Syntax (noch) nicht lernen muss.

            Nun ja, wenn Du meinst ...

            Direkt prüfbar und ohne jeden Zusammenhang zu einer JavaScript-Version.
            Wie denn? Es geht mir nicht um den DOM-Support! (siehe https://forum.selfhtml.org/?t=164149&m=1069510)

            Was ist Dir nach der drei Worte umfassenden grundlegenden Antwort darauf noch unklar geblieben?

            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. Hi

              Es lohnt sich doch zu wissen, dass kein Browser ausser Firefox so was schönes wie »destructuring assignments«, let, yield etc. unterstützt.

              Ja. Es ist aber absolut uninteressant zu wissen, welcher Browser die von ihm unterstützte JavaScript-Version "1.5" nennt.

              Das ist mir ja auch egal. Die Formulierung der Eingangsfrage ist mir wohl nicht so gut gelungen. Mich interessieren tatsächlich nicht die Versionen, sondern die unterstützten Sprachfeatures (wobei allerdings ziemlich genau definiert ist, was "JavaScript 1.5" ist).

              Direkt prüfbar und ohne jeden Zusammenhang zu einer JavaScript-Version.
              Wie denn? Es geht mir nicht um den DOM-Support! (siehe https://forum.selfhtml.org/?t=164149&m=1069510)

              Was ist Dir nach der drei Worte umfassenden grundlegenden Antwort darauf noch unklar geblieben?

              Die Antwort auf meine Frage fehlt. OK, sie war schlecht formuliert. Ich versuchs nochmal:

              Ich suche eine Tabelle (oder eine einfache Möglichkeit, mir eine solche zu erstellen), die Browserversionen und jeweils unterstützte ECMAScript-Sprachfeatures integriert.
              Also so etwas wie http://www.opera.com/docs/specs/js/ecma/, allerdings für alle wichtigeren Browser, wie es zum Beispiel auf http://www.quirksmode.org/dom/contents.html für den DOM1-Support gemacht ist.

              Was ich dann damit mache ist wohl meine Sache ^^

              Gruss,
              nam