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

sessionStorage - wczytywanie danych

Object Storage Arubacloud
0 głosów
188 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,180 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,180 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ź 118 wizyt
pytanie zadane 9 lipca 2020 w JavaScript przez Author[] Gaduła (3,130 p.)
0 głosów
0 odpowiedzi 157 wizyt
0 głosów
0 odpowiedzi 78 wizyt
pytanie zadane 9 czerwca 2019 w JavaScript przez Programista 22 Bywalec (2,270 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...