Ankündigung

Einklappen
Keine Ankündigung bisher.

Frage an die Coder: Wie weiß ich, auch welcher Seite ich mich befinde?!

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

    Frage an die Coder: Wie weiß ich, auch welcher Seite ich mich befinde?!

    Moin Jungs,

    ich bin dabei, mich um eine - zumindestens von mir gewünschte - timeout funktion zu kümmern. Sprich wenn man so und so lange nix getippt hat, dann springt es zu einer vorher definierten Seite zurück.

    Was mir nun leider ein bischen Kopfzerbrechen bereitet, ist festzustellen, welche Seite aktuell angezeigt wird.

    Ich das irgendwo hinterlegt?! Kann man da von einem Plugin drauf zugreifen?

    Danke...Netsrac

    #2
    Spontan kann ich da bzgl. eines "Status" nicht weiterhelfen, da müsste ich in den Code schauen, ob wir so etwas haben.

    Wenn Dir aber der "Event" reicht, wenn gerade der Seitenwechsel passiert, dann schau mal im Code in der Nähe von scrollToPage() (o.ä.)
    TS2, B.IQ, DALI, WireGate für 1wire so wie Server für Logik und als KNX Visu die CometVisu auf HomeCockpit Minor. - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

    Kommentar


      #3
      Jetzt mal so spontan aus der Erinnerung glaube ich, das die aktuelle Seite immer mit der Css-Klasse activePage oder pageActive versehen ist (eventuell sogar beide). Danach könntest Du per Selektor auf die Seite zugreifen.

      Um den Event "Seitenwechsel" mitzukriegen kannst Du folgendes benutzen:

      Code:
      $(window).bind('scrolltopage',function() {
      
      });
      Gruß
      Tobias

      Kommentar


        #4
        Zitat von peuter Beitrag anzeigen
        Code:
        $(window).bind('scrolltopage',function() {   });
        Okay...CSS nutzte mir an dieser Stelle nix, aber scrolltopage hat geholfen.

        Jetzt stoplere ich noch über ein anderes Problem:

        Habe mir den entsprechenden code aus "scrollToPage" kopiert und möchte den gerne in meinem Plugin nutzen, um die ID einer Page bei der Angabe des Names rauszufinden:

        Code:
          if (page_id.match(/^id_[0-9_]+$/) == null) {
            // find Page-ID by name
            $('.page h1:contains(' + page_id + ')', '#pages').each(function(i) {
              if ($(this).text() == page_id) {
                page_id = $(this).closest(".page").attr("id");
              }
            });
          }
        In meinem plugin ist page_id z.B. "Start", was "id_0" liefern müsste - tut es aber nicht.

        Und ich habe null Ahnung, wie man das debuggen kann.

        Ideen?!

        Danke...Netsrac

        Kommentar


          #5
          Zitat von netsrac Beitrag anzeigen
          In meinem plugin ist page_id z.B. "Start", was "id_0" liefern müsste - tut es aber nicht.
          Was liefert es denn stattdessen, nichts?

          Zitat von netsrac Beitrag anzeigen
          Und ich habe null Ahnung, wie man das debuggen kann.

          Ideen?!
          Der Code sucht nach einem h1-Element, in einer page mit dem Inhalt "Start". Kannst Du dieses Element den von Hand im Quelltext finden (also z.B. mit Firebug generierten Quelltext manuell suchen.)

          Wenn Du mit Firebug arbeitest kannst Du Dir übrigens mit
          Code:
          console.log("Debugnachricht");
          Debug-Nachrichten ausgeben lassen, die werden dann in der Firebug Konsole angezeigt. Das ist fürs debuggen mitunter sehr hilfreich.
          Gruß
          Tobias

          Kommentar


            #6
            Zitat von peuter Beitrag anzeigen
            Was liefert es denn stattdessen, nichts?
            undefined :-(

            Der Code sucht nach einem h1-Element, in einer page mit dem Inhalt "Start". Kannst Du dieses Element den von Hand im Quelltext finden (also z.B. mit Firebug generierten Quelltext manuell suchen.)

            Wenn Du mit Firebug arbeitest kannst Du Dir übrigens mit
            Code:
            console.log("Debugnachricht");
            Debug-Nachrichten ausgeben lassen, die werden dann in der Firebug Konsole angezeigt. Das ist fürs debuggen mitunter sehr hilfreich.
            Ja, das mit der Console mache ich ja schon fleissig :-) Leider kann man keine completen Elementefamilien ausgeben lassen (sowas wie var_dump in PHP) :-(

            Im Firebug finde ich das Start und ein "scrollToPage("Start")" funktioniert auch - es will halt nur an meiner Stelle nicht.

            habe den Code nochmal angepasst:

            Code:
            var target = "Start";
             
                if (target.match(/^id_[0-9_]+$/) == null) {
            console.log("In target match");
            
                     $('#pages').each(function(i) {
                         var bla = $('.page h1:contains('+target+')').closest(".page").attr("id") ;
            console.log("Found " + bla);
                       });
                     }
            
            console.log("New first try : " + target);
            "In target match" wird getriggert, "Found" auch, aber leider is "bla" undefined :-(

            Noch 'ne Idee...bin ratlos und jetzt ist erstmal Family angesagt :-)

            Schönen Abend...

            Netrac

            Kommentar


              #7
              Zitat von netsrac Beitrag anzeigen
              Ja, das mit der Console mache ich ja schon fleissig :-) Leider kann man keine completen Elementefamilien ausgeben lassen (sowas wie var_dump in PHP) :-(
              Doch, zumindest DOM-Elemente kann man ausgeben. Deine Codeanpassung ergibt in meinen Augen nicht wirklich Sinn. Probier mal folgenden Code und guck mal was da ausgeben wird.
              Code:
              var page_id="Start";
              if (page_id.match(/^id_[0-9_]+$/) == null) {
                 // find Page-ID by name        
                 $('.page h1:contains(' + page_id + ')', '#pages').each(function(i) { 
                    console.log($(this).text());
                    if ($(this).text() == page_id) {         
                       page_id = $(this).closest(".page").attr("id");       
              }     });   }
              Ansonsten poste mal das komplette Plugin, dann kann ichs selbst mal testen.
              Gruß
              Tobias

              Kommentar


                #8
                Zitat von netsrac Beitrag anzeigen
                Ja, das mit der Console mache ich ja schon fleissig :-) Leider kann man keine completen Elementefamilien ausgeben lassen (sowas wie var_dump in PHP) :-(
                Doch, console.log() kann beliebige (komplizierte) JavaScript Variablen.
                Auch gut sind Breakpoints und dann interaktives Durchklicken der Variablen in der Code-Pane.

                Übrigens: Auch bei einem pausiertem Skript kann man die interaktive Console verwenden. Das kennt dann auch die lokalen Variablen, deren Wert man sich z.B. durch einfache, direkte Eingabe anzeigen lassen kann.

                Und neben dem FireBug ist es oft auch praktisch das Thema im Chrome[ium] zu bearbeiten. Manchmal haben die Debugger dort kleine, aber feine Unterschiede.
                TS2, B.IQ, DALI, WireGate für 1wire so wie Server für Logik und als KNX Visu die CometVisu auf HomeCockpit Minor. - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

                Kommentar


                  #9
                  Zitat von peuter Beitrag anzeigen
                  Probier mal folgenden Code und guck mal was da ausgeben wird.
                  Code:
                  var page_id="Start";
                  if (page_id.match(/^id_[0-9_]+$/) == null) {
                     // find Page-ID by name        
                     $('.page h1:contains(' + page_id + ')', '#pages').each(function(i) { 
                        console.log($(this).text());
                        if ($(this).text() == page_id) {         
                           page_id = $(this).closest(".page").attr("id");       
                  }     });   }
                  Danke Dir...das Problem war aber nicht der Code. Das Problem bestand darin, dass ich das schon beim "create" aufgerufen habe und die Pages zu diesem Zeitpunkt schlicht und einfach noch nicht aufgebaut waren :-(

                  Zitat von Chris M. Beitrag anzeigen
                  Doch, console.log() kann beliebige (komplizierte) JavaScript Variablen.
                  Auch gut sind Breakpoints und dann interaktives Durchklicken der Variablen in der Code-Pane.
                  Nunja, wenn ich aber sowas mache wie

                  Code:
                  $p = $(page);
                  console.log($p);
                  dann bekomme ich nur [Object object] raus. Wenn man sich nun aber gehörig verrannt hat, dann weiß man doch gar nicht, welche Objecte in dem Element stecken....das ist meistens mein Problem.

                  Wenn es halt sowas wie 'nen var_dump geben würde, der einfach alle Elemente innerhalb von $p ausgibt, dann würde das vieles einfacher machen.

                  Aber dank Eurer Hilfe habe ich es nun geschafft.

                  Die Tage nochnal ein bischen hübsch machen und dann haben wir eine Lösung für eines meiner Probleme :-)


                  gruß, Netsrac

                  Kommentar


                    #10
                    Zitat von netsrac Beitrag anzeigen
                    Nunja, wenn ich aber sowas mache wie

                    Code:
                    $p = $(page);
                    console.log($p);
                    dann bekomme ich nur [Object object] raus.
                    Und wenn Du mal auf das [Object object] klickst, dann kannst Du Dir alle Eigenschaften/Daten des Objekts anschauen und damit hast Du Deinen Dump.
                    Gruß
                    Tobias

                    Kommentar


                      #11
                      Zitat von netsrac Beitrag anzeigen
                      springt es zu einer vorher definierten Seite zurück
                      Wofür musst du wissen, auf welcher Seite du bist, wenn du auf eine definierte Seite springen möchtest?
                      Gruß, Sebastian
                      Baustelle 2.0 (Detailprogrammierung und Restarbeiten)
                      Ruhri? -> Komm zum Stammtisch

                      Kommentar


                        #12
                        Zitat von Bainit Beitrag anzeigen
                        Wofür musst du wissen, auf welcher Seite du bist, wenn du auf eine definierte Seite springen möchtest?
                        Eigentlich ganz simpel:

                        Ich will im Hintergrund nicht unnötig irgendwelche Timer laufen lassen, wenn ich bereits auf der Seite bin, wo ich hin will...auch im Zeitalter von genug RAM & CPU kann man doch ein bischen Redourcen schonen :-)

                        Gruß, netsrac

                        Kommentar


                          #13
                          Ok, das ist ein gutes Argument.
                          Wobei sich mir die Fage stellt, wie lange kann ein einfacher Timer wohl laufen, um den Verbrauch dieses Forums für diesen Tread zu kompensieren? Und wie viel Strom kostet mein iPad dieser Smiley?
                          Gruß, Sebastian
                          Baustelle 2.0 (Detailprogrammierung und Restarbeiten)
                          Ruhri? -> Komm zum Stammtisch

                          Kommentar


                            #14
                            Da ist was dran

                            Wieviel kostet der Timer wohl einen Quadcore im Smartphone, da muss man lange sparen bis Gesamtökologisch alle Leser dieses Threads eingespart sind

                            Makki
                            EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                            -> Bitte KEINE PNs!

                            Kommentar


                              #15
                              Für mich bedeutet Resourcen doch nicht gleich Strom. Wenn es danach geht, müsste man von dem ganzen EIB Geraffel sowieso die Finger lassen und wieder auf analoge Schalter umstellen.

                              Mir geht es vielmehr um die CPU Resourcen. Man muss dort doch nicht mehr verschwenden, als notwendig...und statt 'nen neues Tablett oder Smartphone zu kaufen, wenn die Geschwindigkeit nicht mehr passt, kann man auch mit Bedacht coden :-)

                              Gruß, netsrac

                              Kommentar

                              Lädt...
                              X