Frage

Versuchte ...

<div data-role="page" data-cache="30"> 
<div data-role="page" data-cache="never">
<div data-role="page" data-cache="false"> 
<div data-role="page" cache="false">

Nichts seemes zur Arbeit ... so im Moment bin ich das Problem auf der Server-Seite über ...

Befestigungs
.'?x='.rand()
.'&x='.rand()

Ich will nicht das AJAX nur das Caching deaktivieren. Es hat einen besseren Weg sein, obwohl ... bin ich etwas fehlt?

Danke,

Serhiy

War es hilfreich?

Lösung

Vielen Dank für die Antworten Jungs, und obwohl sie für mich nicht ganz funktioniert hat sie taten Punkt mich in die Richtung, den Code zu finden die ich suchte.

Dies ist der Code, dass ich auf diesem Herrn Github Gist gefunden.

https://gist.github.com/921920

jQuery('div').live('pagehide', function(event, ui){
  var page = jQuery(event.target);

  if(page.attr('data-cache') == 'never'){
    page.remove();
  };
});

Es gibt auch einen Zurück-Button Code in dem Gist, aber ich glaube nicht, dass es wirklich brauche, wie meine Back-Button ganz gut zu funktionieren scheint ...

Andere Tipps

Haben Sie versucht, den Standardwert zu überschreiben?

$(document).bind("mobileinit", function(){
    $.mobile.page.prototype.options.domCache = false;
});

Dies funktioniert für mich

Seite Caching ist nun standardmäßig deaktiviert in JQM RC1. Siehe Auszug aus der unten stehenden JQM Website über Seiten-Caching: http://jquerymobile.com/demos /1.0rc1/docs/pages/page-cache.html

Wenn Sie möchten, können Sie jQuery Mobile sagen vorher besuchten Seiten im DOM zu halten, anstatt sie zu entfernen. Auf diese Weise können Sie Cache-Seiten, so dass sie verfügbar sofort, wenn der Benutzer wieder auf sie.

Damit alle zuvor besuchten Seiten im DOM, stellen Sie die domCache Option auf der Seite Plugin wahr, wie folgt aus:

$.mobile.page.prototype.options.domCache = true;

Alternativ zum Cache nur eine bestimmte Seite, können Sie die Daten-dom-Cache = „true“ -Attribut auf die Behälterseite hinzufügen:

<div data-role="page" id="cacheMe" data-dom-cache="true">

Sie können auch eine Seite programmatisch wie dieser Cache:

pageContainerElement.page({ domCache: true });

Der Nachteil von DOM-Caching ist, dass der DOM sehr groß werden kann, was zu einer Verlangsamung und Speicherproblemen auf einigen Geräten. Wenn Sie DOM-Caching aktivieren, darauf achten, das DOM selbst und testen Sie gründlich auf einer Reihe von Geräten zu verwalten.

Methode 1

Das deaktiviert AJAX

lesen http://jquerymobile.com/demos/1.0a2/#docs/api /globalconfig.html

Set ajaxLinksEnabled auf falsch und es wird nicht die Seiten, nur Arbeit als normale Links laden und zwischenzuspeichern.

Methode 2

Zweite Idee ist, im Cache gespeicherten Elemente zu entfernen. Sie können zu pagehide Ereignis binden und machen es die Seite, anstatt zu entfernen. Wenn nicht in DOM, wird die Seite neu geladen werden.

Es kann mit diesem Code als Proof of Concept durchgeführt werden:

$('.ui-page').live('pagehide',function(){ $(this).remove(); });

Aber es braucht ein wenig Arbeit. Der obige Code bricht die Geschichte. Es beweist, dass Sie nur in der Lage sein werden, mit Seiten zu verwenden, Sie beabsichtigen, Blätter in Ihrer Sitemap Baum. Deshalb müssen Sie für sie eine besondere Selektor erstellen oder bindet es nur auf bestimmte Seiten.

Sie können auch zu einem Klick der Taste binden oder mousedown- Ereignis, dessen href erhalten, generieren Seite id aus ihn und finden Sie die div von id es vor JQM versucht zu entfernen, um es zu suchen.

Ich habe nicht empfohlen Weg gefunden, um den Cache zu deaktivieren oder das Laden zu erzwingen.

Martin Antwort sollte die richtige meiner Meinung nach, aber jQuery Mobile Cache, um die erste Seite, egal was. https://github.com/jquery/jquery-mobile/issues/3249

Ich habe auf "Patch" das Verhalten von $.mobile.page.prototype.options.domCache = false und data-dom-cache="true" entschieden

$(document).on('pagehide', function (e) {
    var page = $(e.target);
    if (!$.mobile.page.prototype.options.domCache
        && (!page.attr('data-dom-cache')
            || page.attr('data-dom-cache') == "false")
        ) {
        page.remove();
    }
});

Hier ist meine Arbeitslösung:

$('.selector').live( 'pagebeforecreate', function () {
    $.mobile.urlHistory.stack = [];
    $.mobile.urlstack = [];
    $( '.ui-page' ).not( '.ui-page-active' ).remove();
});

Ich schrieb ein (Original in deutscher Sprache) Artikel über das Thema, hilft vielleicht das. Link zu Google übersetzte Artikel

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top