Расширение Edge не может получить имя загружаемого файла в событии onchange?

В расширении Edge я хочу получить все имена загружаемых файлов. Вот мой код:

document.addEventListener('click', (event) => {
    const element = event.srcElement;
    const elementName = element.localName;
    if (elementName === 'input') {
        if (element.getAttribute('type') === 'file') {
            element.onchange = function (e) {
                console.log(e.target.value);
            }
        }
    }
});

Но этот console.log:

{"notifyType":"consoleItemLog","message":{"message":"","styles":"","hasFormatString":true,"targetId":"uid36","fileUrl":"js/contentscript.js","lineNumber":49,"columnNumber":17}}

Я не знаю, как получить имя загружаемого файла? И когда я запускаю console.log(e), в onchange отказано в доступе.

введите здесь описание изображения

большое спасибо!


person 王张军    schedule 05.09.2018    source источник


Ответы (1)


Я вижу, что вы хотите использовать событие OnChange, но я не понимаю, где вы хотите использовать это событие. Лучше использовать событие нажатия кнопки, чтобы получить список загруженных файлов. Ниже приведен пример кода.

<!DOCTYPE html>
<html>
<body>

<p>Click the button to create a File Upload Button.</p>
<input type="file" id="fileElementId" name="files[]" multiple/>
<button onclick="fun2()">Try it</button>

<script>

function fun2()
{
var inp = document.getElementById('fileElementId');
for (var i = 0; i < inp.files.length; ++i) {
  var name = inp.files.item(i).name;
  //alert("here is a file name: " + name);
  console.log("here is a file name: " + name);
}
}
</script>

</body>
</html>

Вывод: Нажмите здесь, чтобы увидеть вывод:

С Уважением

Дипак

person Deepak-MSFT    schedule 06.09.2018
comment
Спасибо за ответ! Работает хорошо. Но мой вопрос в расширении браузера Microsoft Edge (docs .microsoft.com/en-us/microsoft-edge/extensions/ хотите написать расширение Edge, чтобы получить любое имя загружаемого файла. Мой код хорошо работает в расширении chrome. Но не так хорошо в расширении браузера Edge. в любом случае, большое спасибо. - person 王张军; 06.09.2018