Widoczność JS-owych zmiennych globalnych w różnych kartach/oknach.

0

Uczę się JS-a z tutorialu na w3. Napotkałem się na coś takiego :

In a web browser, global variables are deleted when you close the browser window (or tab), but remains available to new pages loaded into the same window.

Postanowiłem to sprawdzić. Stworzyłem dwa pliki trening.html i trening2.html.
trening1.html

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
 </head>
    <body>
       <script>
	      function wywolanieFunkcji()
		  {
		    alert(x);
		  } 
		  
		   x = 5;
		  wywolanieFunkcji();
		 	 
	   </script> 
	</body>
</html>

trening2.html

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
 </head>
    <body>
       <script>
	      alert(x);
	   </script>
	   
	  
	</body>
</html>

Uruchomiłem najpierw trening1.html, zamknąłem zakładkę z tym plikiem i otworzyłem trening2.html jednak zamiast okienka alert z wartością x otrzymuję :

Uncaught ReferenceError: x is not defined

No zgodnie z tym co napisali w tutorialu powinno się wyświetlić a jednak tak się nie dzieje. Dlaczego?

1

Zgodnie z tym co napisali czyli

global variables are deleted when you close the browser window (or tab)

to po zamknięciu karty zmienne globalne idą w niebyt. Zamiast zamykać cokolwiek otwórz trening2.html w tej samej zakładce co trening1.html.

Bardziej łopatologicznie:

  • przygotuj kartę
  • otwórz w niej trening1.html
  • potem otwórz w niej trening2.html (zawartość trening1.html oczywiście zniknie)

JavaScript nie rozróżnia między oknami bez kart, a oknami z wieloma kartami. Jeśli przeglądarka obsługuje karty to JSowy window jest pojedynczą kartą, a jeśli przeglądarka nie obsługuje kart (tzn jest w stanie wyświetlić tylko jedną stronę) to JSowy window jest w zasadzie całym oknem.

0

Nadal nie czaję. Zrobiłem dokładnie tak jak napisałeś i nadal dostaję

trening2.html:8 Uncaught ReferenceError: x is not defined

Można sprawdzić:
http://sh194765.website.pl/trening.html
http://sh194765.website.pl/trening2.html

1

Hmm, no w sumie na Chrome u mnie nie działa to przekazywanie zmiennych. Jedyne co udało mi się znaleźć na SO co by działało to wstawianie danych do window.name i to jest w stanie przetrwać załadowanie kolejnej strony.

0

Sprawdzałem na operze i FF i też nie działa. Czyżby w tutorialu napisali nieprawdę? Ktoś jest w stanie wyjaśnić o co chodzi?

0

Bo jedyne co w3schools ma dobre to pozycjonowanie w googlu ;) Ogólnie bzdura, nie jedna zresztą na tym serwisie.

0

Co zatem polecasz do nauki online? :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1