Announcement

Collapse
No announcement yet.

base36 problem mit nicht-gecko-browsern

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • base36 problem mit nicht-gecko-browsern

    Nachdem ich im Netz die gesuchten base36 Funktionen als open source gefunden hatte, mußte ich leider feststellen, dass diese nur mit Gecko-Browsern fehlerfrei arbeiten.

    Die Decoderfunktion konnte ich auf Webkit und Presto zum laufen bringen:

    function decodeB36(str, separator) {
    return (""+(str||"")).split(separator||"\u200b").map(func tion(s){
    return String.fromCharCode(parseInt(s,36));}).join("");
    }


    Die Encoderfunktion hingegen nicht:

    function encodeB36(str, separator) {
    return Array.map(""+(str||""),function(c){
    return c.charCodeAt(0).toString(36);}).join(separator||"\ u200b");
    }


    In den Originalen fehlen lediglich die geschweiften Klammern der inneren Funktion.

    Ich wäre sehr dankbar für jedwede Hilfe bei diesem Problem!

  • #2
    irgendwie habe ich den Eindruck, dass da Code fehlt....

    hier gibt es einen der sollte das in alle Versionen können

    http://www.geneffects.com/briarskin/...MathFuncs.html
    Zuletzt editiert von Christian Marquardt; 11.05.2010, 18:11. Reason: Rechtschreibung
    Christian

    Comment


    • #3
      Leider fehlt hier kein Code.

      Leider fehlt hier kein Code. Außerdem wird base36 in diesem Fall als String-de/compressor verwendet und nicht als Numberconverter. Das kein code fehlt, kann man ganz einfach nachvollziehen indem man diese Seite einmal z.B. mit Firefox 1.5-3.6 startet und danach mit irgendeinem Safari oder Opera!

      <html>
      <head>
      <title>Base36 de/compressor</title>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <script type="text/javascript">
      <!--
      function decodeB36(str, separator) {
      return (""+(str||"")).split(separator||"\u200b").map(func tion(s){
      return String.fromCharCode(parseInt(s,36));}).join("");
      }
      function encodeB36(str, separator) {
      return Array.map(""+(str||""),function(c){
      return c.charCodeAt(0).toString(36);}).join(separator||"\ u200b");
      }
      //-->
      </script>
      </head>
      <body>
      <script type="text/javascript">
      var str = '测串试字符串字';
      var estr = encodeB36(str);
      var dstr = decodeB36(estr);
      document.body.innerHTML += '<br>UTF-8 string : ' + str;
      document.body.innerHTML += '<br>Base36 encoded: ' + estr;
      document.body.innerHTML += '<br>Base36 decoded: ' + dstr;
      </script>
      </body>
      </html>
      Zuletzt editiert von Christian große Lordemann; 11.05.2010, 18:18. Reason: Ergänzungen

      Comment


      • #4
        Ich will das nicht nachvollziehen.

        Da es die Funktionen

        decodeB36(estr);

        und

        encodeB36(str);

        im Script nicht gibt könnte auch dies ein Grund sein, warum es in einigen Browsern nicht geht
        Christian

        Comment


        • #5
          Du mußt schon entschuldigen, aber ein Forenheld ware wohl etwas kompetenter als du!

          Comment


          • #6
            Wenn du dir die Mühe machst, den Javascriptcode zu debuggen, siehst du, warum es nicht funktioniert

            .....falls du das kannst
            Christian

            Comment


            • #7
              Damit du nun auch heute abend noch ein Erfolgeserlebnis hast:

              Der Grund warum es nicht geht ist, dass map eine Funktionalität von Firefox seit Version 1.5 ist. Dieses wird nicht von allen Browsern unterstützt. Dies hätte ein debuggen des Scriptes im Nu ergeben

              Wenn man den von Mozilla bereitgestellten Prototyp einbaut funktioniert das Script.

              Des Weiteren ist es schlechter Programmierstil Methoden nicht mit den erforderlichen Paramtern zu versorgen

              Gute Nacht
              Christian

              Comment


              • #8
                Wenn du das Script wirklich zum Laufen gerbracht hast, warum hast du es dann hier nicht veröffentlicht?

                Comment


                • #9
                  Das lässt meine Inkompetenz leider nicht zu.

                  Da ich aber erst heute abend von diesem Problem Kenntnis hatte, und ich die Lösung gefunden habe, sollte dir das auch möglich sein.....
                  Christian

                  Comment

                  Working...
                  X