2016-06-14 16 views
5

Sto inserendo e rimuovendo div in base al valore del cookie. il valore del cookie viene aggiornato controllando e deselezionando la casella di controllo. questo funziona bene per una singola scheda. ma come aggiornare i div in un'altra scheda anche se sono aperte più schede per la stessa pagina. Il valore del cookie viene aggiornato in quanto rimane lo stesso per il browser, ma come aggiungere o rimuovere le div in relazione al valore del cookie.Aggiornamento valore elemento div basato su cookie in più schede

+0

Sede [ 'postMessage()'] (https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage) –

+0

Si prega di inserire codice di esempio –

+0

la il codice è troppo grande per postare – Pratyush

risposta

3

Ho scoperto un modo che ha funzionato per me, ho usato una variabile con ambito globale per memorizzare il valore del cookie. definito un metodo per verificare se il valore del cookie non è uguale a quello della variabile, aggiornare la pagina.

Ma se non è necessario aggiornare la pagina corrente, aggiornare il valore della variabile ogni volta che si aggiorna il cookie.

Quindi in pratica sto aggiornando altre schede ma non la mia scheda attuale. So che questo non è il modo migliore per farlo, ma farà il lavoro.

Se trovi qualcosa di più efficiente, per favore pubblica.

1

Se si sta utilizzando l'archiviazione locale invece di un cookie, è possibile utilizzare l'evento storage, che viene generato quando viene apportata una modifica all'archiviazione locale.

Vedere http://synccheckbox.site44.com/ per un esempio in esecuzione. Codice incollato qui sotto:

<!doctype html> 
<html> 
<head> 
    <style>html { font-family:Arial }</style> 
</head> 
<body> 
    This checkbox should synchronize between open tabs: 
    <input type="checkbox" id="checkbox" /> 

    <script> 
     function updateCheckbox() { 
      document.getElementById('checkbox').checked = 
       (localStorage.checked === 'true'); 
     } 
     updateCheckbox(); 

     document.getElementById('checkbox').addEventListener('change', function() { 
      localStorage.checked = this.checked; 
     }); 

     window.addEventListener('storage', function() { 
      updateCheckbox(); 
     }); 
    </script> 
</body> 
</html> 
+0

possiamo usare archiviazione locale in PHP? – Pratyush

+0

Non sono sicuro di cosa intendi. La memoria locale è una funzionalità del browser ... è accessibile solo nel browser. – smarx

+0

Penso che @Pratyush voglia manipolare valori presi dallo storage locale in alcune variabili php e chiedere la sua fattibilità – Anant

Problemi correlati