有时不会在<input type =“ file” />上引发'input'事件

时间:2019-05-11 12:09:37

标签: javascript html5 dom events

最小示例:

<title>a</title>
<body>
<script>
document.body.appendChild(
    Object.assign(document.createElement('button'),{
        textContent:'A',
        onclick(){
            // increase the failure rate
            //let a=[...Array(1000000)]
            let input=document.createElement('input')
            Object.assign(input,{
                type:'file',
                oninput(){
                    console.log('input')
                },
            }).click()
            // decrease the failure rate (can be considered as "to zero")
            //console.log(input)
            console.log('click')
        },
    })
)
</script>

单击按钮后,将创建并单击<input type=file>,从而创建文件对话框。

示例结束

我认为在通过该文件对话框选择文件后,应始终发出“ input”事件;但有时却没有。

铬:有时会出现
Firefox:总是被模仿
Safari:有时会出现

怀疑这种现象与垃圾回收有关,因为let a=[...Array(1000000)]似乎增加了不发生“输入”事件的机会;而console.log(input)则相反。

在不是文档后代的DOM节点上发出事件是否已定义为行为?如果已定义,并且没有其他问题,我会认为是Chromium和Safari错误的结果。

0 个答案:

没有答案