Pregunta

Probado ...

<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 nada para el trabajo ... por lo que en este momento estoy solucionar el problema en el lado del servidor a través de ...

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

No quiero desactivar el AJAX sólo el almacenamiento en caché. Tiene que haber una manera mejor, aunque ... me estoy perdiendo algo?

Gracias,

Serhiy

¿Fue útil?

Solución

Gracias por las respuestas chicos, ya pesar de que no funcionó para mí el punto que lo hizo conmigo en la dirección de encontrar el código que estaba buscando.

Este es el código que he encontrado en este caballero de 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();
  };
});

También hay un código del botón de vuelta en esa Gist, pero no parece que lo necesita de verdad como mi botón de retroceso parece funcionar bien ...

Otros consejos

¿Usted ha intentado sobrescribir el valor por defecto?

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

Esto funciona para mí

Página caché está desactivado por defecto en JQM RC1. Véase a continuación el extracto de la página web JQM sobre la caché de páginas: http://jquerymobile.com/demos /1.0rc1/docs/pages/page-cache.html

Si se prefiere, se puede decir jQuery Mobile para guardar las páginas visitadas anteriormente en el DOM en lugar de la eliminación de ellos. Esto permite guardar en caché las páginas para que estén disponibles al instante si el usuario vuelve a ellos.

Para mantener todas las páginas visitadas anteriormente en el DOM, establece la opción domCache en la página plugin para cierto, como este:

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

Por otra parte, en la caché sólo una página en particular, puede agregar los datos-dom-cache = "true" atributo de contenedor de la página:

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

También puede almacenar en caché una página de programación de esta manera:

pageContainerElement.page({ domCache: true });

El inconveniente de DOM almacenamiento en caché es que el DOM puede ser muy grande, lo que resulta en demoras y problemas de memoria en algunos dispositivos. Si habilita el almacenamiento en caché de DOM, tenga cuidado para manejar el DOM sí mismo y probar a fondo en una gama de dispositivos.

Método 1

Esto desactiva AJAX

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

Conjunto ajaxLinksEnabled a falso y no va a cargar y almacenar en caché esas páginas, funcionan igual de enlaces normales.

Método 2

Segundo idea es eliminar los elementos almacenados en caché. Puede unirse al evento pagehide y hacer que quitar la página en lugar. Si no está presente en DOM, la página se carga de nuevo.

Se puede hacer con este código como una prueba de concepto:

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

Pero necesita un poco de trabajo. El código anterior se rompe la historia. Se prooves que sólo se podrá utilizar con páginas que tengan la intención de ser hojas en el árbol de mapa del sitio. Por lo tanto usted tiene que crear un selector especial para ellos o se unen a sólo ciertas páginas.

También usted puede unirse a clic de un botón o evento MouseDown, obtener su href, generar la página Identificación de ella y encontrar la div por id eliminarla antes de intentos JQM a buscarlo.

he encontrado ninguna manera advertido de deshabilitar la caché o forzar la carga.

La respuesta de Martin debe ser la correcta en mi opinión pero jQuery Mobile almacenar en caché la primera página, sin importar lo que pase. https://github.com/jquery/jquery-mobile/issues/3249

He optado por "parche" el comportamiento de $.mobile.page.prototype.options.domCache = false y 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();
    }
});

Aquí está mi solución de trabajo:

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

Me escribió un (original en alemán) artículo sobre ese tema, tal vez eso ayuda. enlace a Google artículo traducido

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top