Ankündigung

Einklappen
Keine Ankündigung bisher.

Fragen und Probleme mit Edomi unter CentOS 6

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

  • gaert
    antwortet
    sipiyou
    Ja klar, aber damit wird ja kein Klick registriert sondern ein touchstart... Genau das will ich nicht. Wenn der User "Klick" wählt, soll er auch Klick bekommen

    Einen Kommentar schreiben:


  • MrIcemanLE
    antwortet
    Zitat von MrIcemanLE Beitrag anzeigen
    Hallo Zusammen,

    ich habe heute auf 2.0 aktualisiert. Danach musste ich feststellen, dass meine Benutzer-CSS-Eigenschaften nicht mehr funktionieren. Ich hatte bisher die Icons auf meiner Startseite auf 70% reduziert. Nach dem Update werden diese aber in voller Größe angezeigt. Kann das Verhalten jemand bestätigen oder ist das ein Cache-Problem?
    Zitat von vento66 Beitrag anzeigen
    Kann ich bestätigen! CSS Hintergründe schauen bei mir jetzt auch anders aus.
    gaert Christian, kannst du das Problem mit den Hintergründen nachvollziehen? Würde mir sonst irgendwie anders helfen.

    Gruß
    Stefan

    Einen Kommentar schreiben:


  • powell
    antwortet
    Hi, ich habe deinen Code gerade mal getestet und die Code Eingabe läuft bei mir damit auch flüssiger. Danke fürs teilen!

    Einen Kommentar schreiben:


  • sipiyou
    antwortet
    Alles, was ich finde ist, dass auf einem Touch-Display clickEvents zu unnötigen Verzögerungen führen, die vom Benutzer als störend empfunden werden können.

    Du musst keinen eigenen clickHandler implementieren sondern auf Touchgeräten nicht click, sondern touchstart verwenden.

    Hier ein paar Links zum stöbern (die Googlesuche gibt noch mehr).

    https://coderwall.com/p/bdxjzg/tap-v...h-by-ignorance

    ^ Ironischerweise würde die Überschrift langsam auch hier zutreffen "Click death by ignorance"

    https://stackoverflow.com/questions/...-devices-in-js
    https://www.mediaevent.de/javascript/touch-events.html

    Um es kurz zu machen, folgender Code würde das Problem auch auf den Android-Geräte fixen:

    /edit: nochmal mit richtigen newlines...

    Code:
     function setInputMode(touch,click,scroll) {
        if (touch==2 || (touch==0 && ('ontouchstart' in window))) {
            visu_touchMode=true;
            downEvent='touchstart';
            moveEvent='touchmove';
            upEvent='touchend';
            cancelEvent='touchcancel';
            clickEvent='touchstart';
        } else {
            visu_touchMode=false;
            downEvent='mousedown';
            moveEvent='mousemove';
            upEvent='mouseup';
            cancelEvent=false;
             clickEvent= (click != 0) ? 'click' : 'mousedown';
        }
          if (scroll==0) {
            document.body.style.position="fixed";
        } else if (scroll==1) {
            document.body.style.position="absolute";
        } else if (scroll==2) {
            if (!visu_touchMode) {document.body.style.position="absolute";
        } else {
            document.body.style.position="fixed";}
        } else if (scroll==3) {
            if (visu_touchMode) {document.body.style.position="absolute";} else {document.body.style.position="fixed";}
        }
    }
    Zuletzt geändert von sipiyou; 25.08.2019, 20:43.

    Einen Kommentar schreiben:


  • gaert
    antwortet
    Weil die Spezifikation es so will - ein Klick ist ein Klick und das OS entscheidet, was ein Klick ist Klar kann ich mir auch einen eigenen Klick-Handler bauen, aber wozu?

    Einen Kommentar schreiben:


  • sipiyou
    antwortet
    Ich habs eben nochmal auf dem Ipad getestet, es ist in der Tat auf dem Ipad jetzt in Ordnung, jedenfalls fällt es nicht mehr ins Gewicht.

    Aber das Problem besteht bei den Android-Geräten immer noch. Sobald onClick verwendet wird ist es träge.

    Wofür benötigst du den onClick Event auf einem Touchdisplay überhaupt ? Selbst bei einem longClick verwendest du den downEvent und nicht den clickEvent. visuElement_onClick:

    if (functionShort && !functionLong) {
    obj.addEventListener(((forceDownEvent)?downEvent:c lickEvent),function(){
    if (checkClick()) {
    if (indicateShort) {visuElement_indicate(document.getElementById(objI d));}
    functionShort(veId,objId);
    }
    },false);

    } else if (functionLong) {
    obj.addEventListener(downEvent,function(){
    if (checkClick()) {
    longClick(veId,objId,functionShort,functionLong,in dicateShort,indicateLong,animationLong);
    }
    },false);
    }

    Einen Kommentar schreiben:


  • gaert
    antwortet
    Das Click-Event wird auch bei Touch-Geräten laut Webkit-Spezifikation korrekt ausgewertet. Je nach OS verhält sich das aber unterschiedlich - iOS wartet z.B. 300ms bis das Event feuert, um einen "Longklick" zu unterscheiden (bei iOS führt dies zur Selektion/Kontextmenü).

    Und ich hab's jetzt ja auch getestet (iPad/iMac) - funktioniert. Getestet mit Codeschloss und einem normalen Button (Universalelement). Nach dem Patchen musst Du natürlich den Browser-Cache löschen, damit das neue Script "greift".

    Einen Kommentar schreiben:


  • sipiyou
    antwortet
    Wie schon gesagt, das Problem fällt nur beim Codeschloss "wirklich" auf, das Problem gibt es aber auch bei allen Buttons, da hat man das Gefühl, dass das Eingabegerät kaputt ist.

    Danke für den Patch, aber es löst das Problem immer noch nicht.

    Das Problem ist immer noch click != 0, denn click = 1 und das überschreibt wiederrum den clickEvent. Im Screenshot clickEventInit.png siehst du, dass bei mir setInputMode mit click=1 initialisiert wird.

    Kann es sein, dass ein click nur im Maus-Modus sinn macht ? Ich hatte gestern mir noch die Eventreihenfolge angeschaut, der click Event ist an letzter Stelle der Eventauswertung im JS-Handler.

    Beim Touchscreen wäre es doch sinnvoller, den Klick per default beim loslassen auszuwerten ?

    Einen Kommentar schreiben:


  • gaert
    antwortet
    Ah ja...! Du hast Recht - ich hab's offenbar nie mit Codeschloss+iPad getestet. Nur Deine Lösung ist nicht ganz korrekt, bzw. nicht im Sinne des Erfinders.

    Ersetze mal einfach die komplette JS-Funktion setInputMode() wie folgt:

    Code:
    function setInputMode(touch,click,scroll) {
        if (touch==2 || (touch==0 && ('ontouchstart' in window))) {
            visu_touchMode=true;
            downEvent='touchstart';
            moveEvent='touchmove';
            upEvent='touchend';
            cancelEvent='touchcancel';
            clickEvent='touchstart';
        } else {
            visu_touchMode=false;
            downEvent='mousedown';
            moveEvent='mousemove';
            upEvent='mouseup';
            cancelEvent=false;
            clickEvent='mousedown';
        }
    
        if (click!=0) {
            clickEvent='click';
        }
    
        if (scroll==0) {
            document.body.style.position="fixed";
        } else if (scroll==1) {
            document.body.style.position="absolute";
        } else if (scroll==2) {
            if (!visu_touchMode) {document.body.style.position="absolute";} else {document.body.style.position="fixed";}
        } else if (scroll==3) {
            if (visu_touchMode) {document.body.style.position="absolute";} else {document.body.style.position="fixed";}
        }
    }

    Einen Kommentar schreiben:


  • sipiyou
    antwortet
    Ja, du hast recht. Der Fehler steckt weiter vorne, zumal die von mir genannte Datei jedesmal bei einer Projektaktualisierung neu generiert wird.

    Ich hatte nur "das Ende" gefunden, allerdings hatte ich mir deinen Code auch nur oberflächlich angeschaut.

    Anbei 2 Bilder mit der initialisierung mit onClick und onDown. Einziger Unterschied ist, dass der EventListener mit

    downEvent (= "touchstart") initialisiert wird (bei onDown).

    Wird der EventListener mit "Click" initialisiert, so geht gibt es das Problem.

    Als dritte Datei ist die Initialisierung (clickEventInit.png). Dort wird der downEvent auf "touchstart" gestellt, aber der clickEvent auf "click", ungeachtet dessen, ob es sich um ein "Touch" oder "Maus" handelt und hier liegt letzendlich auch das Problem.

    D.h. bei mir gibt es einfach ein "click"-Event Problem, dieses Problem gibt es sowohl mit den beiden Android Tablets (Chrome & Fully), wie auch mit dem Ipad Pro (Safari).

    Dass das Problem bei Dir nicht auftritt, glaube ich dir fast nicht, stell zum testen den click auf touchstart und dann geh ganz schnell über das Tastenfeld des Keypads.
    Selbst auf dem Ipad merkst du einen deutlichen Unterschied zu click. Das gleiche gibt es auch bei Buttons, nur da fällt es in der Regel nicht so auf, weil man eh nur ein Feld anklickt.

    Falls du zum beheben des Fehlers noch mehr Input brauchst, werd ich dir das zur Verfügung stellen, aber ich kann dir keine Lösung jetzt geben, da ich aus der C/C++ Welt komme; ich kann zwar dutzende Programmiersprachen, aber so tief kenne ich mich in Javascript nicht aus, dass ich Dir adhoc weiterhelfen kann, hier müsste ich mich selbst einlesen und abgesehn davon ist es dein Code, wo ich nicht irgendwas dran ändern will.

    /edit:

    Zum Testen:

    /usr/local/edomi/www/visu/include/js/main.js

    Zeile 133

    clickEvent='click';

    ändern auf

    clickEvent='touchstart';

    /edit2: Unter den Visu-Account Einstellungen sollte dann der

    Klickmodus auf "beim Loslassen"
    Eingabegerät "Touch-Bedienung"

    gestellt werden. Hatte eben noch das Problem beim Display oben, nun läuft es flüssig.
    Angehängte Dateien
    Zuletzt geändert von sipiyou; 24.08.2019, 07:32.

    Einen Kommentar schreiben:


  • gaert
    antwortet
    Hä? Diese 2 Funktionen sind schon jeweils in Ordnung und haben ihren Sinn. Bei mir funktioniert's ohne Probleme...

    Was Du da "patchst" umgeht einfach die Visu-Account-Einstellungen des Nutzers - dies ist aber nicht Sinn der Sache.

    Einen Kommentar schreiben:


  • sipiyou
    antwortet
    So, ich hab den Fehler gefunden.

    Davon sind wahrscheinlich auch diverse andere Clickevents betroffen, denn mir ist auch aufgefallen, dass meine Buttons in der Visu träger reagieren bzw. der "Klick" nicht registriert wird.

    Das Problem ist der onDown-Flag, dieser wird mit 2.0 nicht gesetzt und genau das führt dazu, dass das Klickverhalten wesentlich träger wie 1.64 ist und zwischendurch schnelle Klicks verloren gehen.

    d.h. für "altes Klickverhalten" bei der Pineingabe muss in der

    /usr/local/edomi/www/data/liveproject/vse/vse_include_visu6.js

    visuElement_onClick(document.getElementById("e-"+elementId+"-k1"),function(veId,objId){VSE_24_virtualKey(veId,1 );},((obj.dataset.var4&1)?true:false));

    einfach durch

    visuElement_onDown(document.getElementById("e-"+elementId+"-k1"),function(veId,objId){VSE_24_virtualKey(veId,1 );},((obj.dataset.var4&1)?true:false));

    ersetzt werden.

    Alternativ kannst du, wenn du irgendwann onDown wegoptimieren möchtest den forceDownEvent auf "true" setzen. Was es bewirkt, hab ich mir jetzt nicht angeschaut.

    Ich würde es begrüssen, wenn du dadraus einen offiziellen Patch bastelst und auch das Verhalten der anderen Events dir anschaust. Es wundert mich allerdings sehr, dass es sonst keinem aufgefallen ist, denn es ist definitiv ein Codeproblem und ich habe hier momentan noch eine 0815 Visu.

    Soviel zu meinem eigentlichen Vorhaben, den Gira-HS in die Tonne zu treten, weil ich nicht selbst das Rad bei jeder Kleinigkeit erfinden wollte und einfach mal "Nutzer" sein wollte.

    Einen Kommentar schreiben:


  • gaert
    antwortet
    Am Besten wäre es mal die JS-Console anzuwerfen (per USB mit dem PC verbinden und in Chrome/Safari die Konsole für's Tablet öffnen). Vielleicht kommt da irgendwas zu Tage...

    Einen Kommentar schreiben:


  • ThomasCologne
    antwortet
    Zitat von sipiyou Beitrag anzeigen
    Wenn ich die Visu auf dem PC mit der Maus steuere ist alles ok. Wenn ich das auf dem Touchpad mache dann hab ich fast das Gefühl, dass das Display die Klicks nicht annimmt, aber das ist eben nur mit der 2.0
    ... habe ich auch festgestellt, allerdings bisher noch nicht auf das Update zur 2.0 geschoben. Der Start an sich scheint (subjektiv) schneller zu sein.
    Ich suche daher auch noch nach irgend einer "Fehleinstellung"

    Einen Kommentar schreiben:


  • sipiyou
    antwortet
    Aktuell hab ich folgende Einstellung für den Visu-User:

    Eingabegerät: "Touchbedienung",
    Klickmodus: "beim betätigen"
    scrollen: "nur bei Mausbedienung"

    Ich hab eben aber Eingabegerät "Automatisch" und scrollen "nie" nochmal geteste, aber keine Änderung. Zwischendurch werden Klicks nicht registriert.

    /edit: auch bei Mausbedienung ist kein wirklicher Unterschied feststellbar.
    Zuletzt geändert von sipiyou; 20.08.2019, 21:57.

    Einen Kommentar schreiben:

Lädt...
X