Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Не работают события локальных хранилищ (https://javascript.ru/forum/events/69245-ne-rabotayut-sobytiya-lokalnykh-khranilishh.html)

DGGDAK47 08.06.2017 15:34

Не работают события локальных хранилищ
 
Всем привет.У меня возникла проблема,что событие (window.onStorage) не вызывается при изменении в localStorage либо sessionStorage.
Также пытался задать обработчик событию (storage),через метод (window.addEventListener(); ),но он тоже не работает.В интернете три колеки.

Вот исходник:

<script>
       function handlerr(){
           alert("Событие");
       }
         window.addEventListener("storage", handlerr, false);
        
        function ch(){
            localStorage["name"]="v";
            localStorage.setItem("n","v");
        } 
    </script>



Вызывая метод (ch()) происходят изменения в хранилище,но событие не вызывается.

ksa 08.06.2017 16:51

Цитата:

Сообщение от DGGDAK47
событие (window.onStorage) не вызывается при изменении в localStorage

У людей работает...
https://professorweb.ru/my/html/html5/level5/5_2.php

laimas 08.06.2017 17:14

Цитата:

Сообщение от ksa
У людей работает...

только так как написал Rise.

DGGDAK47 08.06.2017 18:34

Цитата:

Сообщение от Rise (Сообщение 454925)
так оно на странице которая производит запись и не должно вызываться.

А когда оно должно то вызываться???

рони 08.06.2017 18:56

Цитата:

Сообщение от DGGDAK47
А когда оно должно то вызываться???

когда изменение произойдёт на одной из соседних страниц, открытых с этогоже сайта.
нужно событие там где изменяют , добавьте тригер в
function ch(){
            localStorage["name"]="v";
            localStorage.setItem("n","v");
alert("ура событие")

        }

laimas 08.06.2017 18:56

Цитата:

Сообщение от DGGDAK47
А когда оно должно то вызываться???

Сделайте переход на другую страницу этого же домена.

DGGDAK47 08.06.2017 19:50

Цитата:

Сообщение от рони (Сообщение 454952)
когда изменение произойдёт на одной из соседних страниц, открытых с этогоже сайта.
нужно событие там где изменяют , добавьте тригер в

Цитата:

Сообщение от laimas (Сообщение 454953)
Сделайте переход на другую страницу этого же домена.



Я наверное чегото недопонимаю.Я написал два документа,они вызывались локально и у них были общие локальные данные.Я запустил оба(пытался по отдельности,через ссылки <a>)документа.В первом я добавлял локальные значения хранилища,во втором назначил обработчик события хранилища.Начинаю изменять значения в первом,а во втором ничего не происходит.Таки может я не так чтото делаю?

Вот оба исходника:
-1.
<!DOCTYPE html>
<html>
 <head>
   <script>
      function ch(){
          localStorage.setItem("nave","value");
      }
   </script>   
 </head>
 <body>
     <button onclick="ch();">Изменить</button>
     <a href="new1.html" target="_blank">ссылка</a>
 </body>
</html>



-2.
<!DOCTYPE html>
<html>
 <head>
   <script>
     function h(){
         var s=document.getElementById("s");
         var li=document.createElement("li");
         li.innerHTML="ASD";
         s.appendChild(li);
     }    
       
     window.addEventListener("storage",h,false);
     
    
   </script>   
 </head>
 <body>
    <ul id="s"></ul>
 </body>
</html>

рони 08.06.2017 19:56

Цитата:

Сообщение от DGGDAK47
Таки может я не так чтото делаю?

проверять надо не локально, а не сервере.

рони 08.06.2017 19:58

DGGDAK47,
или так в проверке
localStorage.setItem("nave", Math.random());

DGGDAK47 08.06.2017 20:00

Цитата:

Сообщение от рони (Сообщение 454958)
проверять надо не локально, а не сервере.

Уух,запустил через локальный сервер (XAMPP Apache) и все заработало.

Последний вопрос-а где можно применить эти события?


Часовой пояс GMT +3, время: 14:50.