Ankündigung

Einklappen
Keine Ankündigung bisher.

knxweb für iPod Touch optimieren

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

  • Tru
    antwortet
    iPod Touch fertig optimiert

    So, das mit der Funktion event.preventDefault() war ganz offensichtlich Schrott. Leider hatte es bei mir nie einen Fehler gezeigt, sonst hätte ich das auch nie so veröffentlicht. In der Zwischenzeit habe ich meinen Code überarbeitet und neu bereitgestellt. Ich gehe jetzt davon aus, dass es jetzt überall auf Anhieb klappt.

    Dann habe ich heute einen neuen Anlauf genommen, das bisher ungelöste Problem des langen Tastendrucks zu bearbeiten, nämlich zu verhindern, dass das "Save Image" Menu erscheint, wenn man beim Dimmersymbol zu lange drückt. Und sieht da, ich glaube die Lösung gefunden zu haben.
    Das "body" Element in der Datei css/style.css erhält zusätzlich die Zeile "-webkit-touch-callout:none;" und sieht jetzt so aus:
    Code:
     
    body {
             font-size: 11px;
             font-family: Arial, Helvetica, sans-serif;
             color: #000;
             background: #FFF;
             margin: 0 0 0 0;
             -webkit-touch-callout:none;
     }
    Es würde mich interessieren, ob das bei euch auf dem iPhone und iPod auch hilft.

    Gruss, Othmar

    Einen Kommentar schreiben:


  • Tru
    antwortet
    Zitat von nektar Beitrag anzeigen
    muss das dahin??
    Auf jeden fall gehts jetz auch mit iPhone und iPad
    Freut mich sehr. Seltsam, dass bei dir deswegen ein Fehler aufgetreten ist. Dabei müsste es sich nämlich um eine Standardfunktion handeln. Vielleicht habe ich die Funktion auch falsch angewendet, kann schon sein.

    Damit hatte ich experimentiert, weil sonst beim Dimmen die Stufe immer gleich bis aufs Minimum/Maximum ging. Soweit ich diese Funktion verstanden habe, wird damit die normal zugewiesene Funktion für ontouchstart gelöscht.

    Bei mir hat es genützt. Wenn es bei dir auch ohne funktioniert, dann ist gut. Sonst müsstest du weiter experimentieren.

    Gruss, Othmar

    Einen Kommentar schreiben:


  • nektar
    antwortet
    Jetzt habe ich es hinbekommen.

    Habe dies hier gelöscht in der common.js
    bei setActionDown
    Code:
                    event.preventDefault();
    muss das dahin??
    Auf jeden fall gehts jetz auch mit iPhone und iPad

    Einen Kommentar schreiben:


  • nektar
    antwortet
    so sieht die common.js am ende bei mir aus

    Code:
    function setActionClick(objectname,functioncode) {
            if (navigator.platform == "iPod" || navigator.platform == "iPhone" || navigator.platform == "iPad") {
                    objectname.ontouchstart=functioncode;
            }
            else {
                    objectname.onclick=functioncode;
            }
    }
    
    function setActionDown(objectname,functioncode) {
            if (navigator.platform == "iPod" || navigator.platform == "iPhone" || navigator.platform == "iPad") {
                    objectname.ontouchstart=functioncode;
                    event.preventDefault();
            }
            else {
                    objectname.onmousedown=functioncode;
            }
    }
    
    function setActionUp(objectname,functioncode) {
            if (navigator.platform == "iPod" || navigator.platform == "iPhone" || navigator.platform == "iPad") {
                    objectname.ontouchend=functioncode;
            }
            else {
                    objectname.onmouseup=functioncode;
            }
    }

    Einen Kommentar schreiben:


  • Tru
    antwortet
    Zitat von nektar Beitrag anzeigen
    Das komische ist ja, das dieser Effekt nur auf dem iPhone und dem iPad zu sehen ist. Im Firefox auf dem PC geht es.
    So, heute ist ein iPhone bei mir zu Besuch. Meine Tests zeigen, dass alles genau gleich gut funktioniert wie auf meinem iPod Touch.

    Ich habe zu Testzwecken mal eine der beiden Funktionen setActionDown und setActionUp in common.js auskommentiert. Dann passiert auch das, was du beschrieben hast: einige Widgets werden noch dargestellt, aber kein Dimmer und andere fehlen auch. Allerdings passiert im Firefox auf dem PC das gleiche auch. Hast du den Code mit Refresh wirklich nachgeladen?

    Aus diesem Test würde ich schliessen, dass deine Datei common.js nicht in Ordnung ist.

    Bitte prüf noch einmal ob du die originale Version von common.js mit meiner Version als ganzes ersetzt hast und nicht etwa von Hand (fehlerhaft) modifiziert hast.

    Gruss, Othmar

    Einen Kommentar schreiben:


  • Tru
    antwortet
    Zitat von nektar Beitrag anzeigen
    Das komische ist ja, das dieser Effekt nur auf dem iPhone und dem iPad zu sehen ist. Im Firefox auf dem PC geht es.
    Leider steht mir nur ein iPod, aber weder iPhone noch iPad zur Verfügung. Könnte ich das Problem sehen, würde ich das alte cdimmer.js in Richtung neues cdimmer.js schrittweise modifizieren und so müsste man dem Fehler auf die Spur kommen können. Eventuell sind die Touch-Funktionen aus Javascript bei iPod und iPhone + iPad unterschiedlich.

    Vielleicht hilft hier ein anderer.

    Gruss, Othmar

    Einen Kommentar schreiben:


  • nektar
    antwortet
    Ja habe gestern mehrmals die dateien unter Linux heruntergeladen und entpackt.
    Das komische ist ja, das dieser Effekt nur auf dem iPhone und dem iPad zu sehen ist. Im Firefox auf dem PC geht es.
    Habe mehrere Browser getestet und auch mehrere iPads und iPhones.

    Alles andere funktioniert

    Einen Kommentar schreiben:


  • Tru
    antwortet
    Zitat von nektar Beitrag anzeigen
    In der Datei cdimmer.js ist etwas nicht in Ordnung.
    Ich habe die Datei nochmals mit dem Original verglichen und kann beim besten Willen nichts falsches entdecken. Aus meiner Sicht ist die Syntax in Ordnung.
    Zitat von nektar Beitrag anzeigen
    Immer wen ich die Datei benutze sehe ich ab dem Dimmer Widget keine anderen mehr in der Visu. Sobald ich die Datei mit der Originalen tausche funktioniert alles.
    Tja, das deutet schon auf einen Syntax-Fehler hin. Nun, innerhalb cdimmer.js werden als einzigem Ort die beiden neuen Funktionen setActionDown und setActionUp aus common.js aufgerufen. Es kann also sehr wohl daran liegen, dass es an der Datei common.js liegt. Diese hast du auch aus dem TAR-File js.tar entpackt?

    Auch in common.js kann ich keinen Syntaxfehler entdecken. Deinen Fehlereffekt kann ich jedenfalls nicht nachvollziehen.

    Gruss, Othmar

    Einen Kommentar schreiben:


  • nektar
    antwortet
    Hallo

    Hatte gestern Abend ein wenig Zeit zum testen.

    In der Datei cdimmer.js ist etwas nicht in Ordnung.
    Immer wen ich die Datei benutze sehe ich ab dem Dimmer Widget keine anderen mehr in der Visu. Sobald ich die Datei mit der Originalen tausche funktioniert alles.

    Hat noch jemand die Probleme mit iPad oder iPhone?

    Habe die Modifizierten Dateien aus dem tar file entpackt.

    Einen Kommentar schreiben:


  • Tru
    antwortet
    Zitat von Bodo Beitrag anzeigen
    Besser wäre ein Diff, aber wie das wieder geht...
    diff common.js common.js.orig
    Code:
    350,378d349
    <
    < function setActionClick(objectname,functioncode) {
    <         if (navigator.platform == "iPod" || navigator.platform == "iPhone" || navigator.platform == "iPad") {
    <                 objectname.ontouchstart=functioncode;
    <         }
    <         else {
    <                 objectname.onclick=functioncode;
    <         }
    < }
    <
    < function setActionDown(objectname,functioncode) {
    <         if (navigator.platform == "iPod" || navigator.platform == "iPhone" || navigator.platform == "iPad") {
    <                 objectname.ontouchstart=functioncode;
    <               event.preventDefault();
    <         }
    <         else {
    <                 objectname.onmousedown=functioncode;
    <         }
    < }
    <
    < function setActionUp(objectname,functioncode) {
    <         if (navigator.platform == "iPod" || navigator.platform == "iPhone" || navigator.platform == "iPad") {
    <                 objectname.ontouchend=functioncode;
    <         }
    <         else {
    <                 objectname.onmouseup=functioncode;
    <         }
    < }
    <

    Einen Kommentar schreiben:


  • Bodo
    antwortet
    Hab's damals runtergeladen.
    Besser wäre ein Diff, aber wie das wieder geht...

    Einen Kommentar schreiben:


  • Tru
    antwortet
    Zitat von Bodo Beitrag anzeigen
    Genau so ist es. Nur der Touch-optimierte Code zeigt dieses Verhalten.
    Nun in diesem Fall dürfte es wohl am angepassten Code liegen. Ich kann dieses Verhalten mit meinen iPod aber trotz grosser Mühe nicht nachvollziehen. In meiner Visu habe ich rund 60 Bedienelemente und die kommen eigentlich alle sehr schnell beim ersten Aufruf. Vielleicht besuchst du mich mal mit deinem iPhone, hast ja nicht weit.

    Einen Ansatz habe ich noch: im File common.js gibt es noch spezielle Zeichen in der Funktion tr(msg). Vielleicht hat sich durch das Hoch und Runterladen des ASCII-Files etwas untauglich geändert. Hast du das File direkt runtergeladen oder aus dem Browser als Text kopiert? Die Differenz zwischen dem Original und meinem File darf genau nur den Code für die 3 Zusatzfunktionen umfassen.

    Ich habe mal die ganzen Files in ein tar-File gepackt, um sie in einem Wisch runterladen zu können.

    Gruss, Othmar

    Einen Kommentar schreiben:


  • Bodo
    antwortet
    Zitat von Tru Beitrag anzeigen
    Am Interessantesten wäre diese Frage: Tritt der Effekt nur auf wenn der Touch-optimierte Code eingesetzt wird? Oder auch mit dem Original-Code?
    Hoi Othmar

    Genau so ist es. Nur der Touch-optimierte Code zeigt dieses Verhalten.
    Ich hoffe mal wieder ein bischen Zeit zu haben um das zu testen, was Du gesagt hast, einzelne Files ändern sukzessive.
    Auf jeden Fall eine coole Sache.

    Einen Kommentar schreiben:


  • Tru
    antwortet
    Zitat von Bodo Beitrag anzeigen
    Vielleicht müssen die angehängten Funktionen weiter vorne im Code plaziert werden im common.js?
    Kenn' mich da nicht so genau aus...
    Nun, ich würde mich auch nicht unbedingt als Experten bezeichnen. Trotzdem schliesse ich das aus. Im common.js werden übergeordnete Variablen und Funktionen definiert. Dieses File wird als eines der ersten geladen und erst nachher kommen all die einzelnen Files für die Widgets, welche auf diese Funktionen Bezug nehmen. Generell werden beim Aufruf der Visu all die einzelnen Files mit Javascript-Code geladen und dieser recht komplexe Code wird dann im Browser gestartet.

    Ich vermute eher ein spezielles Browserverhalten, wobei ich keine Chance habe um dies zu debuggen, weil ich weder iPhone noch iPad zur Verfügung habe. Wenn der Code nicht komplett geladen wird, dann dürfte er auch nicht richtig ausgeführt werden. Ich kann den Effekt auf meinem iPod nicht sehen, aber ich habe pro Screen nur wenige Symbole, welche relativ schnell aufgebaut sind. Zudem setze ich den iPod auch nicht intensiv ein.

    Ich möchte auch nicht garantieren, dass der Code fehlerfrei ist, was möglicherweise erst auf dem Zieldevice mit seinem Browser zum Tragen kommt.

    Ein Aspekt wäre allenfalls noch der Browser-Cache. Wenn die Files mit dem Javascript-Code bereits lokal im Cache sind, dürfte das Ausführen wahrscheinlich zuverlässiger klappen. Ich habe schon mit dem Original-Code den Effekt gesehen, dass über einen langsamen Internet-Anschluss auf meine Visu nicht sofort alle Objekte angezeigt werden, sondern erst nach einem Refresh. Aber ich nehme an, dass ihr schon über WLAN und damit hohe Bandbreite zugreift.

    Am Interessantesten wäre diese Frage: Tritt der Effekt nur auf wenn der Touch-optimierte Code eingesetzt wird? Oder auch mit dem Original-Code? Bei gleicher Ausgangslage mit leerem Browser-Cache. Besteht tatsächlich ein Unterschied, dann würde ich vorschlagen, neues File um neues File zu aktivieren, beginnend mit common.js um allenfalls rauszufinden, ob ein spezielles File den Effekt auslöst. Dieses könnte man dann genauer untersuchen. Ich frage mal rum, vielleicht kann ich mir ein iPad ausleihen.

    Gruss, Othmar

    Einen Kommentar schreiben:


  • Bodo
    antwortet
    Zitat von Bodo Beitrag anzeigen
    ... Ausserdem hab' ich festgestellt, dass auf dem iPod und auch auf dem iPhone beim ersten Aufruf meiner Visu die ganzen Bedienelemente erstmal nicht angezeigt werden.
    Erst wenn ich nach einem Seitensprung zurückkehre sind alle wieder da. Hab' alles mit WinMerge verglichen und nichts besonderes gefunden.
    Hoi

    Ja ich kann das bestätigen.
    Vielleicht müssen die angehängten Funktionen weiter vorne im Code plaziert werden im common.js?
    Kenn' mich da nicht so genau aus...

    Einen Kommentar schreiben:

Lädt...
X