Domanda

provato ...

<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">

seemes nulla su cui lavorare ... quindi al momento sto risolvere il problema sul lato server tramite ...

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

Non voglio disabilitare l'AJAX solo il caching. Ci deve essere un modo migliore però ... mi sto perdendo qualcosa?

Grazie,

Serhiy

È stato utile?

Soluzione

Grazie per le risposte ragazzi, e anche se non hanno fatto abbastanza lavoro per me hanno fatto il punto mi nella direzione di trovare il codice che stavo cercando.

Questo è il codice che ho trovato su di questo signore Github Gist.

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();
  };
});

C'è anche un codice pulsante indietro in quel Gist, ma non mi sembra di averne bisogno davvero come il mio tasto posteriore sembra funzionare bene ...

Altri suggerimenti

Hai provato a sovrascrivere il valore predefinito?

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

Questo funziona per me

Pagina caching è ora disattivata per impostazione predefinita in jQm RC1. Vedere l'estratto di sotto dal sito jQm su caching delle pagine: http://jquerymobile.com/demos /1.0rc1/docs/pages/page-cache.html

  

Se si preferisce, si può dire jQuery Mobile per mantenere le pagine precedentemente visitate nel DOM invece di rimuoverli. Ciò consente di memorizzare nella cache le pagine in modo che siano disponibili immediatamente se l'utente ritorna a loro.

     

Per mantenere tutte le pagine precedentemente visitate nel DOM, impostare l'opzione domCache sulla pagina plugin per vero, in questo modo:

     

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

     

In alternativa, per la cache solo una pagina particolare, è possibile aggiungere i dati-dom-cache = "true" attributo per il contenitore della pagina:

     

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

     

È possibile anche memorizzare nella cache una pagina a livello di codice in questo modo:

     

pageContainerElement.page({ domCache: true });

     

Lo svantaggio di DOM caching è che il DOM può diventare molto grande, con conseguente rallentamenti e problemi di memoria su alcuni dispositivi. Se si abilita la cache DOM, fare attenzione a gestire il DOM te stesso e prova a fondo su una gamma di dispositivi.

Metodo 1

Questa disabili AJAX

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

Set ajaxLinksEnabled su false e non viene caricato nella cache e quelle pagine, solo il lavoro come collegamenti normali.

Metodo 2

Secondo idea è quella di rimuovere gli elementi memorizzati nella cache. È possibile associare all'evento pagehide e renderlo rimuovere la pagina invece. Se non è presente nel DOM, la pagina verrà caricata di nuovo.

Si può fare con questo codice come una prova di concetto:

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

Ma ha bisogno di un po 'di lavoro. Il codice di cui sopra si rompe la storia. Si prooves che vi sarà solo in grado di usarlo con pagine che si intende di essere foglie nell'albero sitemap. Pertanto è necessario creare un apposito selettore per loro o si legano a solo alcune pagine.

Inoltre è possibile associare a clic di un pulsante o evento MouseDown, ottenere il suo href, generare ID pagina fuori di esso e trovare il div id per rimuoverla prima cerca jQm a cercarlo.

ho trovato modo non consigliato di disabilitare la cache o forzatura carico.

La risposta di Martin dovrebbe essere quella giusta a mio parere ma jQuery Mobile in cache la prima pagina non importa quale. https://github.com/jquery/jquery-mobile/issues/3249

I scelto di "patch" il comportamento di $.mobile.page.prototype.options.domCache = false e data-dom-cache="true"

$(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();
    }
});

Ecco la mia soluzione di lavoro:

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

ho scritto un (originale in tedesco) articolo su questo argomento, forse questo aiuta. link a Google dell'articolo tradotto

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top