2017-01-18 3 views
1

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

Когда пользователь нажимает на элемент меню, страница обновляется, а пользователь заканчивается на другой странице.

Разница обновляется с обновленным текстом.

Проблема заключается в том, что когда страница обновляется, я теряю сообщение «Вы находитесь на новой странице», как сохранить обновленное сообщение на новой странице?

JQuery -

<script> 
    $(document).ready(function() { 

     $("li.sub-level").click(function (e) { 
      $('.mylink').html("You are on a new page"); 

     }); 

    }); 

</script> 

HTML -

<div class="mylink">My link</div> 
+2

Вам необходимо его сохранить - локально в Local/SessionStorage, url или сервере. –

+0

yep, что я собирался сказать, localstorage - ваш лучший выбор https://www.smashingmagazine.com/2010/10/local-storage-and-how-to-use-it/ – Pixelomo

+0

javacript управляет DOM после рендера , Это означает, что браузер всегда будет читать исходный HTML-файл. То, что вы делаете, - это манипулирование структурой после рендеринга страницы. Вам нужно как-то сохранить это изменение, например, с localStorage – Zorken17

ответ

1

Вы должны сначала "сохранить" первое место в infoObj, я предлагаю вам сделать это с URL первой страницы. Это предотвратит появление строки «Вы на новой странице», когда находитесь на первой странице.

$(document).ready(function() { 
    var infoObj = {}; 
    var url = window.location.href; 

    if (localStorage.myLink != null) { 
     infoObj = JSON.parse(localStorage.myLink) 
     if (infoObj.url == url) { 
     $('.mylink').html(infoObj.text); 
     } 
    } 

    $("li.sub-level").click(function(e) { 
     infoObj = { 
     url: "PUT YOU FIRST PAGE URL HERE", 
     text: "You are on a new page" 
     } 
     localStorage.myLink = JSON.stringify(infoObj) 
    }); 
}); 
+0

Привет, Зорен, это не работает, я вижу «Вы на новой странице», когда загружается страница, я просто хочу увидеть это, когда я нажимаю элемент меню, который обновляет page $ ("li.sub-level") –

+0

Смотрите мой обновленный код. Вы должны как-то проверить, находитесь ли вы на первой странице или нет. – Zorken17

+0

Мне пришлось отказаться от этого подхода, и вместо этого я манипулирую страницей, введя URL-адрес, большое спасибо всем, кто опубликовал. –

0

Я думаю, вам стоит посетить эту ссылку. я надеюсь, что вы получите ответ.

Ссылка здесь Demo Link

Или пользователь этот код ниже. как работает sessionStorage.

<script> 
    // Run on page load 
    window.onload = function() { 

     // If sessionStorage is storing default values (ex. name), exit the function and do not restore data 
     if (sessionStorage.getItem('name') == "name") { 
      return; 
     } 

     // If values are not blank, restore them to the fields 
     var name = sessionStorage.getItem('name'); 
     if (name !== null) $('#inputName').val(name); 

     var email = sessionStorage.getItem('email'); 
     if (email !== null) $('#inputEmail').val(email); 

     var subject= sessionStorage.getItem('subject'); 
     if (subject!== null) $('#inputSubject').val(subject); 

     var message= sessionStorage.getItem('message'); 
     if (message!== null) $('#inputMessage').val(message); 
    } 

    // Before refreshing the page, save the form data to sessionStorage 
    window.onbeforeunload = function() { 
     sessionStorage.setItem("name", $('#inputName').val()); 
     sessionStorage.setItem("email", $('#inputEmail').val()); 
     sessionStorage.setItem("subject", $('#inputSubject').val()); 
     sessionStorage.setItem("message", $('#inputMessage').val()); 
    } 
</script> 
+0

Зачем ему использовать sessionStorage insted из localStorage? – Zorken17

+0

'sessionStorage' является эфемерным, и элементы исчезают всякий раз, когда вкладка браузера закрыта. Это позволяет вам быть более гибкими с точки зрения того, что вы показываете пользователю, на основе их сеанса просмотра. –

+0

@MD Aman. Если вы используете событие onbeforeunload, у вас могут возникнуть проблемы с этими типами операций, так как всякий раз, когда браузер перемещается со страницы на страницу, он останавливает выполнение JavaScript, чтобы ваши объекты не могли быть сохранены. –

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