2016-10-31 5 views
1

Я добавляю модели в мою коллекцию моделей приложений js, используя вызовы ajax. когда я нажимаю модель и перехожу на следующую страницу, я хочу, чтобы все модели, которые я загрузил, все еще были там, когда я нажимал кнопку «Назад». Каков наилучший способ сделать это, чтобы он работал на всех браузерах? это для мобильной сети. Я не могу найти прямой ответ, как я могу использовать bfcache или историю js, или есть другой, лучший способ?Как сохранить/кешировать дом, чтобы страница загружалась как есть, когда вы нажимаете кнопку «Назад»?

+0

по крайней мере, светлячок фактически восстанавливает (DOM и javascript), если он все еще находится в bf кеш, если только это не было подавлено некоторыми обработчиками событий. – the8472

+0

Я не думаю, что кто-то будет использовать FF на мобильном телефоне, хотя, пытаясь заставить это работать на сафари и хром, в основном для пользователей iOS и Android для мобильных телефонов –

ответ

0

Вы можете хранить их в локальном хранилище и AJAX для них только тогда, когда не существует на локальном хранилище

Таким образом, вместо того, чтобы использовать регулярный $ .ajax, использовать это для Аякса, который вы хотите закэшированный:

function storageBasedAjax(url,cb){ 

    if (localStorage.getItem("myAxaxCache_"+url)){ 
     cb(localStorage.getItem("myAxaxCache_"+url)); 
     return; 
    }  

    $.ajax({url: url, success: function(result){ 
    localStorage.setItem("myAxaxCache_"+url,result); 
     cb(result); 
    }}); 
} 

Просто помните, что вы не хотите, чтобы над нагрузкой, поэтому если у вас есть URL с параметром меняющегося каждый вызов, не используйте это или вы будете перегружать локальное хранилище

+0

Я уверен, что браузер не сохраняет содержимое Ajax при использовании обратно по умолчанию. – niandrei

+0

Это экономит его на наличные деньги, не связанные с кнопкой возврата. –

+0

браузер в настоящее время не сохраняет ничего на мобильном сафари на ios –

Смежные вопросы