Performance Firefox

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

  • Performance Firefox

    Hallo

    Meiner erster Post hier, dennoch mach ich es mal recht kurz.

    Problem: dieses Konstrukt hier verursacht im Firefox nach einigem Hin- und Herfahren der Maus in den Randzellen (oben und links) wahnisnnige Lag's. Weis jemand warum? In anderen Browsern geht es tadellos.

    Danke
    Gruß

  • #2
    FireFox ändert die farbe bei jeder maus veränderungen ... das heist jedesmal wenn du die maus auch innerhalb eines grauen feldes bewegt zeichnet er alle felder neu ... grau ... das das nicht muss ^^ is klar
    Bitte Beachten.
    Foren-Regeln
    Danke

    Kommentar


    • #3
      Und warum tut der sowas? Das nervt ganz schön.

      Kann man denn etwas dagegen machen?

      Kommentar


      • #4
        Original geschrieben von 1Einstein
        Und warum tut der sowas? Das nervt ganz schön.

        Kann man denn etwas dagegen machen?
        Sich das letzte angeklickte Element merken und bei einem Update nur dieses wieder weiß färben.

        OffTopic:

        Firefox ist bei mir eh immer und grundsätzlich eine Performance-Katastrophe... Braucht im Schnitt 200 MB RAM und ab und zu 99 Prozent der Prozessorkapazität...

        Kommentar


        • #5
          Original geschrieben von pekka
          [B]Sich das letzte angeklickte Element merken und bei einem Update nur dieses wieder weiß färben.
          Nur wird ja nichts angeklickt. Schlichtes mouseover und mouseout mit jeweiligem Funktionsaufruf. Und es werden ja auch nur Zellen behandelt die ein bestimmtes name-Attribute haben (col1 oder col12 etc.) Im dem Beispiel sind es halt 19 Stück untereinander und die horizontale wird über den tr tag gefärbt. Also sind quasi nur 20 Elemente gleichzeitig in Behandlung.

          Oder hab ich da was falsch verstanden?

          Kommentar


          • #6
            Warum machst du sowas nicht mit css?
            Das mit dem locked ist ausserdem ja wohl ziemlicher Unsinn, nicht? sobald du wieder über die Spalte fährst ist es automatisch wieder "unlocked". Das schlimmste ist aber wohl document.getElementsByName <-- nimm da was anderes und es läuft super.
            Eine solch regelmässige Tabelle kannst du übrigens, wenn du so oder so Javascript verwendest auch gleich mit Javascript erstellen. Das spart Arbeit, Fehler und vermindert die Grösse der Datei.
            Einfach mit Javascript erzeugen und referenzen gleich in einem Array mitspeichern.

            Kommentar


            • #7
              Original geschrieben von jmc
              Warum machst du sowas nicht mit css?
              Weil das mit CSS nicht geht?! Oder wie soll mir CSS berechnen welche Zeile mit welcher Spalte gekreuzt wird? Das ist ja kein einfaches über Kreuz legen wo sich grade der Mauszeiger befindet. Klär mich auf, ich lerne gerne dazu.


              Das mit dem locked ist ausserdem ja wohl ziemlicher Unsinn, nicht? sobald du wieder über die Spalte fährst ist es automatisch wieder "unlocked".
              Das steht ja hier auch gar nich zur Debatte. Das ist doch nur Spielerei Ausserdem geht das bei einem Kreuz wunderbar. So soll es auch dann später sein, dass nur ein Kreuz festgesetzt und man keine weiteren sehen kann solang.

              Das schlimmste ist aber wohl document.getElementsByName <-- nimm da was anderes und es läuft super.
              Sag mir was und sag mir wie, und ich mache es.

              Eine solch regelmässige Tabelle kannst du übrigens, wenn du so oder so Javascript verwendest auch gleich mit Javascript erstellen. Das spart Arbeit, Fehler und vermindert die Grösse der Datei.
              Einfach mit Javascript erzeugen und referenzen gleich in einem Array mitspeichern.
              Die Tabelle wird mit PHP dann aus mehreren MySQL Tabellen erstellt. Das wollte ich eigentlich keinem Javascript überlassen. Das mit den Referenzen in ein Array musst du mir bitte erklären. Jede Zelle einen unique Name ? Und den dann in ein Array speichern? Und dann? Dann geht das ja nur noch mathematisch zu ermitteln welche Zellen hinterlegt werden müssen. Sicher auch nicht verkehrt, das könnte ich für die Darstellung dieser Tabelle mit FLEX (flash,AS) gebrauchen! Aber wie (Formel)?

              Kommentar


              • #8
                Mit css geht es... Stichwort "hover" mit mehreren Klassen.

                Deine Tabelle sieht vollkommen regelmässig aus also könntest du das ganze ohne Probleme mit Javascript machen. Der Vorteil Wäre, dass du danach direkt einen Array erstellen könntest arr = Array(19) --> arr[0] = Array(19), ..., arr[18] = Array(19).
                Dann hast du einen Array der folgendermassen aussieht arr[19(y)][19(x)].
                Der Vorteil am Dynamischen Erstellen der Tabelle wäre, dass du die Referenz direkt beim erstellen eines Elementes im vorgesehenen arr[y][x] ablegen könntest. Wenn du sie nicht mit Javascript erstellst machst du am besten unique IDs: z.B. so:
                Code:
                for($y = 0; $y < 19; $y++){
                 for($x = 0; $x < 19; $x++){
                  echo "<bla id='unique_" . (($y << 5) | $x) . "'></bla>";
                 }
                }
                Dann in Javascript:
                for(y = 0; y < 19; y++){
                 for(x = 0; x < 19; x++){
                  arr[y][x] = document.getElementById("unique_" + ((y << 5) | x))
                 }
                }
                Zugriff danach mittels arr[y][x];
                Du könntest den Array auch auf 20 erweitern und dort noch dein "locked" speichern. Der Firefox hat so keine Probleme mehr.

                Kommentar


                • #9
                  Ok, soweit ich das jetzt verstehe, übergeh ich mit dem Array die Notwendigkeit ständig ein "getElementsByName" in einer Schleife zu benutzen .. richtig?

                  Wenn dem so ist, wie bekomm ich aber dann die Zellen zum "leuchten" wenn ich über eine der Randzellen fahre? Und vor allem im genau richtigen Zusammenhang? Ich bekomm ja von der überfahrenen Zelle höchstens die ID. Das könnte jetzt zB eine Zahl sein. Wie kann ich aus der Zahl ermitteln welche Zellen alle geändert werden müssen.

                  Sorry wenn ich so blöde Fragen stell, aber mir erschlißt sich das nicht ganz. Und ich bin in JavaScript nicht so versiert.

                  Kommentar


                  • #10
                    Code:
                    function highlight(t, v){
                     if(!arr[19][t]){ // wenn "locked" arr[19][t] == true;
                      var i, c = v ? "#DDD" : "#FFF";
                      arr[0][t].style.backgroundColor = c;
                      arr[t][0].style.backgroundColor = c;
                      for(i = 1; i < 19; i += 2){
                       arr[i][t].style.backgroundColor = c;
                       arr[t][i].style.backgroundColor = c;
                       arr[i + 1][t].style.backgroundColor = c;
                       arr[t][i + 1].style.backgroundColor = c;
                      }
                     }
                    }
                    for(i = 1; i < 19; i++){
                     arr[i][0].onclick = function(){arr[19][i] = !arr[19][i];}
                     arr[0][i].onclick = function(){arr[19][i] = !arr[19][i];}
                     arr[i][0].onmouseover = function(){highlight(i, true);}
                     arr[0][i].onmouseover = function(){highlight(i, true);}
                     arr[i][0].onmouseout= function(){highlight(i, false);}
                     arr[0][i].onmouseout = function(){highlight(i, false);}
                    }
                    Ich habs nicht getestet, aber das sollte ungefähr stimmen. arr muss global sein.

                    Kommentar


                    • #11
                      Ok, erst mal vielen Dank für die Mühe. Ich weis zwar immer noch nicht wie und warum das so funktioniert (also was im einzelnen da nun passiert), aber ich werd mich mal hinsetzen und es herrausfinden

                      Kommentar


                      • #12
                        Wo weisst du nicht was passiert?

                        Kommentar


                        • #13
                          Hat sich erledigt. Habs soweit begriffen Mir war nur nicht ganz klar wie das Array "aussieht", also wie die Daten darin abgelegt sind.

                          also Danke nochmals !

                          Kommentar

                          Lädt...
                          X