standardem W3C standard mówi o localStorages:Jak mają oddzielne sessionStorages dla iframe na samego pochodzenia
Different authors sharing one host name, for example users hosting content on
geocities.com
, all share one local storage object. There is no feature to restrict the access by pathname. Authors on shared hosts are therefore urged to avoid using these features, as it would be trivial for other authors to read the data and overwrite it.
Ale sessionStorages to powiedział, że nie przewiduje odrębnych sessionStorages dla karty i okna nawet z tego samego pochodzenia.
Wygląda jednak na to, że ramka iframes współużytkuje sessionStorage.
Czy istnieje sposób na oddzielne zapisy sesji przy pomocy elementów iframe na tym samym początku.
Edytuj: Edytuj: Ponieważ nie było zamieszania, jeśli karty/okna mają oddzielne Pamięci sesji, tutaj jest przykładowa strona. Zapisz kod w pliku i otwórz go za pomocą dwóch różnych kart. Następnie odśwież jedną kartę 5 razy i odśwież inną kartę 1 raz. Zobaczysz, że liczby różnią się.
<!DOCTYPE html>
<html>
<body>
<div id="result"></div>
<script>
sessionStorage.setItem("counter", (parseInt(sessionStorage.getItem("counter"), 10) || 0) + 1);
document.getElementById("result").innerHTML = sessionStorage.getItem("counter");
</script>
</body>
</html>
Edit2: Co próbowałem tak daleko jest użycie atrybutu sandbox
iframe. Ale wtedy dostałem błąd w elemencie iframe i nie mogę w ogóle użyć sessionStorage. Musiałem dodać sandbox="allow-same-origin"
. Ale potem sessionStorage jest taki sam we wszystkich iframes ponownie.
Z góry dziękuję.
Jaki jest cel, oczekiwany wynik utworzenia innego 'sessionStorage' dla' iframes'? – guest271314
Jedyna różnica między 'sessionStorage' i' localStorage' jest wygaśnięciem. Oba są specyficzne dla początku, co oznacza, że strony z tego samego źródła, niezależnie od tego, jak są otwierane, korzystają z tego samego obiektu pamięci masowej. Jeśli chcesz mieć separację, użyj obiektu z kluczami i uszereguj go przed przechowywaniem. – adeneo
@ guest271314 Wyobraź sobie, że masz stronę z pełnym menedżerem okien. Każde okno składa się z elementu iframe z pojedynczym plikiem html z odpowiednimi js. Strony te nie powinny mieć możliwości korzystania ze swoich zapasów. Ale wszyscy są na tym samym hoście. Jest to bardzo bardzo uproszczona wersja naszej konfiguracji. – McK