Ankündigung

Einklappen
Keine Ankündigung bisher.

Mysteriöses Browserverhalten

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Mysteriöses Browserverhalten

    Hallo,

    habe es gerade mit Phänomenen wie diesen zu tun:

    Zwei User...

    ...befinden sich nicht am selben Ort
    ..loggen sich zu unterschiedlichen Zeiten
    ... mit denselben Zugangsdaten ein
    ...benutzen exakt den gleichen Browser (Chrome 80.0.3987.132 unter Windows)
    ...machen exakt das Gleiche

    Das Verhalten der Web-Applikation ist bei einem User fehlerhaft. An einer Stelle, wo ungefähr so gerechnet wird :

    Code:
    var price = parseFloat($(this).parent().data('price'));
    var num = parseInt(valueArr[0]);
    total += num * price;
    total = Math.round(total * 100)/100;
    Da kommt bei einem z. B. 1.820,10 und bei dem anderen der Wert / 1000 => 1,82.

    Wie kann sowas sein? Wohl bemerkt Browser, Login, Ausführung alles gleich!
    [B]Es ist schon alles gesagt. Nur noch nicht von allen.[/B]

  • #2
    Und der Input (this.parent.data.price) ist in beiden Fällen auch *identisch*? Der fehlt hier.
    [SIZE="1"]Atwood's Law: any application that can be written in JavaScript, will eventually be written in JavaScript.[/SIZE]

    Kommentar


    • #3
      Welche Werte stehn in $(this).parent().data('price') und valueArr[0]?

      Kommentar


      • #4
        @lottikarotti: Die Werte werden schon auf dem Server ins DOM geschrieben und sind daher identisch.

        @hellbringer: Aus der Konsole:
        345.45 und 1
        410.92 und 1
        478.15 und 1
        604.2 und 1

        also jeweils ein Punkt als Dezimaltrennzeichen.

        Theoretisch könnte der einzelne User den Ablauf der Verarbeitung beeinflussen, das würde dann aber auch bedeuten, dass er beim Vergleich dessen, was er tut, nicht die Wahrheit sagt.

        Das Ganze soll eine Eingabehilfe für ein Textarea-Feld sein, dass der User an sich beschreiben kann wie er will. Nutzt er jedoch die angebotenen Plus / Minus Buttons um Produkte, die vorher
        in einer Tabelle hinterlegt wurden, hinzuzufügen oder rauszunehmen, schreibt und rechnet das Skript für ihn. Tatsächlich ist das alles bewusstermaßen fehlerhaft, wenn der User selber in die Textarea
        kreativ Daten eingibt.

        JEDOCH hat das alles nichts damit zu tun, dass wenn beide das Gleiche machen - wie gesagt - im exakt gleichen Browser mit exakt gleichem Login, dass dann eigentlich das gleiche Ergebnis zu erwarten ist.
        Zudem ist es so, das bei mir im gleichen Browser und in allen anderen Browsern immer das erwartete Ergebnis erzielt wird. Ich werde den User wohl nochmal genauer interviewen müssen. Mit grellem Licht und bedrohlicher Pose


        Hier der Code, der die Summe ermittelt.

        Code:
        this.setTotalPrice = function () {
                var txAreaLines = that.getTxAreaLines();
                var total = 0;
                var servtotal = 0;
        
                $.each(this.plusButtons, function() {
                     var lineText = that.getLineText($(this));
                     var price = parseFloat($(this).parent().data('price'));
        
                     var servPrice = 0;
        
                        if ($(this).parent().attr('data-servprice')) {
                            var servPrice = parseFloat($(this).parent().data('servprice'));
                        }
        
                     $.each(txAreaLines, function (index,value) {
                        if (value.indexOf(lineText) > 0) {
                            var valueArr = value.split("x");
                            var num = parseInt(valueArr[0]);
                            total += num * price;
        
                            total = Math.round(total * 100)/100;
                            servtotal += num * servPrice;
                            servtotal = Math.round(servtotal * 100)/100;
                        }
                    });
        
                });
        [B]Es ist schon alles gesagt. Nur noch nicht von allen.[/B]

        Kommentar


        • #5
          Zitat von drsoong Beitrag anzeigen
          Da kommt bei einem z. B. 1.820,10 und bei dem anderen der Wert / 1000 => 1,82.
          Was z.B. passiert, wenn den Wert nochmal durch parseFloat schickst...

          Kommentar


          • #6
            Haben beide denn auch Javascript eingeschaltet?

            Kommentar


            • #7
              So, habe jetzt mit dem Menschen geredet. Der Fehler ist doch an einer anderen Stelle reproduzierbar aufgetreten. Ein Kommunikationsproblem zunächst einmal.

              Also, sorry für diese überflüssige Anfrage....
              [B]Es ist schon alles gesagt. Nur noch nicht von allen.[/B]

              Kommentar

              Lädt...
              X