• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

sessionStorage - wczytywanie danych

42 Warsaw Coding Academy
0 głosów
269 wizyt
pytanie zadane 15 czerwca 2019 w JavaScript przez Programista 22 Bywalec (2,270 p.)

Dzień Dobry,

 

Otóż mam problem z plikami sessionStorage. Kiedy strona ma zapisać "true" w sessionStorage, i wczytać wartość, zamiast "true" mam "null" i powiadomienie o cookies pojawia się zamiast zniknąć. Czy ktoś zna rozwiązanie?

<!DOCTYPE html>
<html lang="pl">
<head>
	<meta charset="utf-8">
	<meta name="description" content="Nasza planeta jest zagrożona. Przez nas, lodowce topnieją, wyginają zwierzęta oraz tlen, który jest potrzebna dla naszego funkcjonowania.Jeżeli chcesz temu zapobiec, to ten blog jest dla ciebie!">
	<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
	<title>Ekologia - BLOG</title>
	
	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
	<meta name="keywords" content="ekologia,środowisko,świat, drzewa, odpady,recykling , emisja , klimat , zmiana klimatu, problemy, ziemia , zanieczyszczenie, rośliny , krzewy , drzewa, wylesianie , las">

	<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
    <link href="main.css" rel="stylesheet" type="text/css">
    <link href="https://fonts.googleapis.com/css?family=Lato:400,700&amp;subset=latin-ext" rel="stylesheet">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src="libs.js"></script>
        <!--[if lt IE 9]>
  		<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
  	<![endif]-->
  	<!--font-family: 'Quando', serif; -->
  	<!--[if lt IE 8]>
		<script"> alert("Nasz blog może działać niepoprawnie na przeglądarkach Internet Explorer poniżej wersji 8.0. ");</script>
  	<![endif]-->
</head>
<body>
<div id="cookies" onclick="cookie_consent()">Ta strona korzysta z ciasteczek.Dalsze korzystanie ze strony oznacza, że zgadzasz się na ich użycie. Zapoznaj się z polityką prywatności i plików cookies
		<input type="submit" value="Zgadzam się">
		 <a href="polityka.php" style="display: inline-block;">Więcej informacji</a></div>

<script>
		if (typeof(Storage) !== "undefined") {
		var y = session_read("cookie_consent","true");
			if (y==true)
			{
				$("#cookies").css('opacity', '0');
				alert("f");
			}
			else
			{
				$("#cookies").css('opacity', '1');
				alert("s")
			}
		} 
		else {
			
			document.write('Błąd w ładowaniu strony! <br>'); 
			document.write('<script type="text/undefined">'); 
		}
		
	function cookie_consent()
	{
		pop_up_out();
		sessionStorage.setItem("cookie_consent","true");
		alert("wha");
	}
	
    </script>
</body>
function session_read(n,value)
{
	let x = sessionStorage.getItem(n);
	if(x == value)
	{
		return true;		
	}
	else
	{
		return false;	
	}
}
function pop_up_out() 
{	
	$('#cookies').fadeOut(750);
	setTimeOut(function(){$('#cookies').css('display','none');},400);
}

 

komentarz 15 czerwca 2019 przez niezalogowany
Czy problem występuje po odświeżeniu strony w tej samej karcie? Czy dopiero po otworzeniu strony w nowej karcie?
komentarz 15 czerwca 2019 przez Programista 22 Bywalec (2,270 p.)
Po odświeżeniu w tej samej karcie.

2 odpowiedzi

+1 głos
odpowiedź 15 czerwca 2019 przez pablop76 VIP (123,540 p.)
edycja 15 czerwca 2019 przez pablop76

setTimeOut zmień na setTimeout Zmień O na małe o. Korzystaj z devtools przeglądarki. Od razu zauważyłbyś, że setTimeOut is not defined. I jak byś zajrzał co siedzi w Session Storage to zobaczył byś, że jest pusty.

Nie wiem czy przekazywanie argumentów do funkcji session_read() jest potrzebne, czy nie lepiej od razu sprawdzić key sessionStorage

function session_read()
{
    (sessionStorage.getItem("cookie_consent"))? true : false
}

 

komentarz 15 czerwca 2019 przez Programista 22 Bywalec (2,270 p.)
A dlaczego są nawiasy w tym (sessionStorage.getItem....) i znak zapytania przed true : false?
komentarz 15 czerwca 2019 przez pablop76 VIP (123,540 p.)

Nawiasy są w tym przypadku nie potrzebne. Znak zapytania to operator warunkowy

0 głosów
odpowiedź 15 czerwca 2019 przez p099 Mądrala (6,390 p.)
Może próbujesz wyświetlić coś co nie jest typem zmiennej która powinna być?

Np. zmienna x = 1 to integer a możesz to wyświetlić jako inny typ.

Jestem pewny na 99% że to właśnie jest przyczyną
komentarz 15 czerwca 2019 przez Programista 22 Bywalec (2,270 p.)
edycja 15 czerwca 2019 przez Programista 22
Ale nie chodzi o wyświetlenie zmiennej, tylko o to dlaczego powiadomienie o cookies wyskakuje mimo iż nie powinno po kliknięciu i zapisania danych do sessionStorage
komentarz 15 czerwca 2019 przez p099 Mądrala (6,390 p.)
Podałem przykład, zastosuj się do niego.

Podobne pytania

0 głosów
1 odpowiedź 170 wizyt
pytanie zadane 9 lipca 2020 w JavaScript przez Author[] Gaduła (3,130 p.)
0 głosów
0 odpowiedzi 312 wizyt
0 głosów
0 odpowiedzi 92 wizyt
pytanie zadane 9 czerwca 2019 w JavaScript przez Programista 22 Bywalec (2,270 p.)

93,382 zapytań

142,382 odpowiedzi

322,539 komentarzy

62,740 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...