jquery-mobile-pageshow

___ tag123javascript ___ JavaScript (nicht zu verwechseln mit Java) ist eine dynamische Sprache mit mehreren Paradigmen auf hoher Ebene, die sowohl für das clientseitige als auch für das serverseitige Scripting verwendet wird. Verwenden Sie dieses Tag für Fragen zu ECMAScript und seinen verschiedenen Dialekten / Implementierungen (außer ActionScript und Google-Apps-Script). ___ qstnhdr ___ JQuery Mobile-pageInit vs. pageshow ___ tag123cordova ___ Apache Cordova (früher PhoneGap) ist ein Framework, mit dem Entwickler plattformübergreifende mobile Anwendungen mithilfe von Webtechnologien wie HTML, JavaScript und CSS erstellen können. ___ tag123jquerymobile ___ jQuery Mobile ist ein touch-optimiertes Web-Framework für Smartphones und Tablets. Es bietet ein einheitliches Benutzeroberflächensystem für alle gängigen mobilen Geräteplattformen, die auf jQuery basieren. ___ tag123jquery ___ jQuery ist eine beliebte Cross-Browser-JavaScript-Bibliothek, die das DOM-Traversal (Document Object Model), die Ereignisbehandlung, Animationen und AJAX-Interaktionen erleichtert, indem die Diskrepanzen zwischen Browsern minimiert werden. Eine mit jQuery gekennzeichnete Frage sollte mit jQuery in Zusammenhang stehen, daher sollte jquery von dem fraglichen Code verwendet werden, und mindestens eine jquery-nutzungsbezogene Elemente müssen in der Frage enthalten sein. ___ tag123jquerymobileageshow ___ hilf uns, dieses Wiki zu bearbeiten ___ qstntxt ___

Ich bin etwas verwirrt über die Verwendung dieser Methoden. Ich weiß, dass pageInit während der Initialisierung aufgerufen wird, aber pageshow wird jedes Mal während des Seitenrenderings aufgerufen.

Ich habe eine Homepage, die Daten mit $ .ajax () für einige Abschnitte lädt. Ich lade die Daten in seitenweise. Binden auch nur die Click- und Swipe-Events in page init. Und, ich habe auch bemerkt, dass die Seite nicht aufgerufen wird, wenn Sie von einer anderen Seite zurückkommen.

Hatte noch ein Problem, wo wir ein Karussell mit swipe.js verwenden. Es wird nicht ordnungsgemäß geladen, wenn die pageInit-Methode verwendet wird. Aber, funktioniert gut beim Laden in Pageshow-Methode. Was könnte der Grund dafür sein, dass ein Seitenaufruf aufgerufen wird, wenn wir den Zurück-Knopf des Browsers benutzen?

Auch spielt die Caching-Rolle eine Rolle bei der Entscheidung, wo die Logik des Ladens von Daten, Bindungsereignissen usw. zu platzieren ist. Es wäre am besten, wenn jemand das Laden von Homepage-Daten erklären, dann navigieren und von einer anderen Seite zurückkehren kann .

    
___ answer16753291 ___

Einführung

Alle hier gefundenen Informationen finden Sie auch in meinem Blog ARTIKEL finden Sie auch Arbeitsbeispiele.

Unterschied zwischen Seitennummer und Seitenanzeige

Lasst uns von Anfang an beginnen. Wie Sie bereits wissen, haben jQuery-Entwickler uns mit Seitenereignissen versehen, um eine Lücke zu überbrücken, die das Dokument nicht erfüllen kann. Während document ready Ihnen sagen kann, dass Inhalte in einem DOM bereit sind, brauchen wir mehr als das, weil jQuery Mobile immer noch die Inhaltsmarkierung verbessern muss (den Inhaltsstil verbessern).

Es gibt mehrere Seitenereignisse, und jeder von ihnen hat seinen Zweck. Einige werden ausgelöst, bevor der Seiteninhalt verbessert werden kann (wie pagebeforecreate ), damit dynamischer Inhalt hinzugefügt werden kann . Einige werden nur beim Seitenwechsel wie pagebeforechange ausgelöst.

Aber lassen Sie uns auf Ihre Frage zurückkommen. %code% ist eine jQuery Mobile-Version von %code% . Während Sie immer noch %code% verwenden können, ist es immer noch logisch, die gleiche Alternative zwischen Seitenereignissen zu haben.

Wie Sie bereits gesagt haben, verwenden Sie %code% für die Ereignisbindung (wie Klick- oder Swipe-Ereignisse), und das ist eine gute Lösung. Hauptsächlich weil %code% an einem Problem namens "multiple event binding" leidet. Wenn z.B. Wenn Sie eine Click-Ereignisbindung an ein Element haben, kann nichts verhindern, dass ein anderes Klickereignis an dasselbe Element gebunden wird. Und das passiert, wenn Sie das Ereignis %code% verwenden. Wenn Sie die Ereignisbindung während des %code% -Ereignisses verwenden, wird jedes Mal, wenn eine Seite besucht wird, das gleiche Ereignis immer wieder gebunden. Es kann leicht verhindert werden, aber die gleiche Vorbeugung erfordert zusätzliche Rechenleistung des Prozessors, dieselbe Leistung, die für den Rest der Web-App verwendet werden kann.

Hier haben wir eine andere Frage (eine Ihrer Fragen), was ist dann der Zweck von %code% ? Offensichtliche Antwort wäre etwas mit einer verfügbaren und angezeigten Seite zu tun. Während der richtigen Antwort ist es nicht so wichtig. %code% ist wichtig, da es nur ein Seitenereignis ist, bei dem die Seitenhöhe korrekt berechnet werden kann und es nicht 0 ist. Jetzt können Sie sehen, warum Ihr Karussell an diesem Punkt initialisiert werden muss. Für Karussells wie viele andere Plugins (Diagramme, Bildergalerien) ist eine korrekte Seitenhöhe erforderlich. Wenn Sie sie vor %code% initialisieren, haben sie die Höhe 0, sie sind also vorhanden, aber Sie können sie nicht sehen .

Bezüglich Ihrer letzten Frage. Einzahlungen spielen keine Rolle, wenn Ihre Anwendung korrekt erstellt wird. Zu Beginn sollten Sie immer die delegierte Ereignisbindung verwenden, da es nicht wichtig ist, ob ein Seitenelement existiert oder nicht. Grundsätzlich, wenn Sie Ihr Ereignis an ein übergeordnetes Element wie ein Dokument binden, spielt es keine Rolle, ob Ihre Seite eingelöst oder aus dem DOM entfernt wird. Sobald es zurück ist, wird das gleiche Ereignis wieder funktionieren.

Beispiel:

%Vor%

Diese Methode bindet ein Klickereignis an ein Dokument, aber das gleiche Klickereignis funktioniert nur bei einem Element mit der ID ' %code% . Es spielt keine Rolle, ob dieses Element existiert oder nicht, weil das Dokumentobjekt immer existiert.

Dieselbe Logik ist nicht so wichtig, wenn Sie mit normalen Webseiten arbeiten, wo das Reload von Seiten eine häufige Sache ist. Oder auch hier mit jQuery Mobile, wenn Ajax ausgeschaltet ist, so ist jede Seitenänderung im Grunde Seitenaktualisierung / Neuladen.

Ich hoffe, das beantwortet alle Ihre Fragen. Wenn Sie Erläuterungen benötigen, fragen Sie sie im Kommentarbereich.

BEARBEITEN:

  1. Wo sollten Sie Ihre Daten laden, hängt davon ab, was Sie laden müssen. Wenn Sie das nur einmal tun möchten, verwenden Sie %code% . Wenn Sie es jedes Mal benötigen, wenn Sie die Seite besuchen, verwenden Sie %code% (denn wenn Sie %code% verwenden, wird der Inhalt einfach aus dem Nichts angezeigt und es kann den Benutzer). Verwenden Sie nicht %code% , da der Inhalt nach dem Ende des Ereignisses geladen wird. Daher ist es nicht sinnvoll, ihn zu verwenden.

    Wenn Sie Inhalt in einem Intervall laden möchten, verwenden Sie %code% mit der Funktion setinterval. Vergiss nicht Seiteninhaltstile jedes Mal manuell zu ergänzen, wenn dynamischer Inhalt hinzugefügt wird.

  2. %code% ist nur nützlich, wenn die Initialisierung der Plug-Ins die erforderliche Seitenhöhe erfordert. Sonst nichts Besonderes. Aus Antwort 1 kann man sehen, dass es ein Bett für dynamischen Inhalt ist, weil es aus dem Nichts auftauchen wird.

    %code% sollte für die Ereignisbindung und dynamische Inhaltsgenerierung verwendet werden.

  3. Morgen werde ich meine Antwort mit Anwendungsfällen für jedes Seitenereignis aktualisieren . Ich hoffe, das wird dir genug sein.

___
2
Antworten

PhoneGap + JQuery Mobile + Google Maps v3: Karte zeigt die oberen linken Kacheln?

Ich habe eine PhoneGap-Anwendung, die mit JQuery mobile zwischen den Seiten navigiert. Wenn ich von der Hauptseite zu einer Seite mit einer Google-Karte navigiere, zeigt die Karte nur eine einzelne Kachel gleichzeitig in der oberen linken Eck...
16.04.2013, 13:35
1
Antwort

JQuery Mobile-pageInit vs. pageshow

Ich bin etwas verwirrt über die Verwendung dieser Methoden. Ich weiß, dass pageInit während der Initialisierung aufgerufen wird, aber pageshow wird jedes Mal während des Seitenrenderings aufgerufen. Ich habe eine Homepage, die Daten mit $ .aj...
25.05.2013, 16:58