javascript - 如何在addEventListener跨浏览器中使用e.path?

标签 javascript google-chrome firefox addeventlistener

这适用于 Chrome:

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

但在 Firefox 上生成此内容:

TypeError: e.path is undefined

e.path[0] 的跨浏览器等效项是什么?

最佳答案

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); 
    });
});

如果浏览器不支持这两者,它仍然不会给出错误,但会因为使用path?.property而设置 Item undefined:undefined

关于javascript - 如何在addEventListener跨浏览器中使用e.path?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61445948/

相关文章:

python - 在没有任何装饰的 Firefox 窗口中打开 jupyter

javascript - 使用 appendchild 方法添加具有特定样式的元素

android - three.js WebVR 示例代码适用于 threejs.org 但不适用于我的本地服务器

javascript - Chrome 开发工具中使用了哪些框架和库?

html - ttf 文件无法在 Chrome 和 Firefox 上呈现

image - firefox 在 png 的内容框边缘以特定宽度呈现灰色细线 - 为什么?

html - Firefox 单选按钮不检查?

javascript - 使用 JavaScript 进行两次测试时遇到问题

javascript - 通过package.json创建模块

javascript - 调用 ko.applyBindings 后向 Knockout View 模型添加新属性