Wyświetlam powiadomienia dla użytkowników za pomocą wtyczki pnotify. Jednak chcę usunąć powiadomienie na wszystkich kartach, jeśli użytkownik zamknie powiadomienie na karcie 1, klikając ikonę X.Słuchaj tylko zdarzenia localStorage.removeItem()
Używam do tego localstorage, za każdym razem, gdy nowe powiadomienie jest pokazywane użytkownikowi, zostaje ono dodane do localStorage. Gdy użytkownik naciśnie ikonę X, wykonuję localStorage.removeItem(key)
. Jak mogę odsłuchać to wydarzenie, aby zamknąć powiadomienie na wszystkich kartach?
Mój słuchacz znajduje się poniżej:
$(window).bind('storage', function(e) {
// if it was removed
if (e.originalEvent.newValue == null) {
var notificationObject = e.originalEvent.oldValue;
// call remove function on pnotify object
notificationObject.remove();
}
});
zauważyłem, że newValue zamienia się zerową, jeżeli zostało ono usunięte, teoretycznie byłoby to działa (jeszcze nie testowane), ale jest to wiarygodne pod względem będzie zawsze return null, jeśli removeItem został wywołany na tym elemencie? Co się stanie, jeśli wartość pozycji zmieni się na null
, następnie wywoła to zdarzenie, ponieważ wartość zmieniła się w prawo?
if (e.originalEvent.newValue == null) powinny być if (! E.originalEvent.newValue) – ymz
@ymz nie ma potrzeby, aby obsłużyć 'undefined' tutaj, spec mówi, że' null' jest zwracana gdy klucz nie jest obecny. – Stijn