Как использовать e.path в кросс-браузере addEventListener? - PullRequest
0 голосов
/ 26 апреля 2020

Это работает на Chrome:

document.querySelectorAll('input[type="text"]').forEach(elt => { 
    elt.addEventListener("change", e => { 
        localStorage.setItem(e.path[0].name, e.path[0].value); 
    });
});

, но генерирует это на Firefox:

Ошибка типа: e.path не определен

Что такое кросс-браузерный эквивалент e.path[0]?

1 Ответ

1 голос
/ 26 апреля 2020

Firefox эквивалент равен e.composedPath()

document.querySelectorAll('input[type="text"]').forEach(elt => { 
    elt.addEventListener("change", e => { 
        let path = e.path || e.composedPath()
        localStorage.setItem(path[0]?.name, path[0]?.value); 
    });
});

Если оба из них не поддерживаются в браузере, он все равно не выдаст ошибку, но установит Item undefined: undefined из-за использование путь? .property

...