evt.target.result пусто? - PullRequest
       3

evt.target.result пусто?

4 голосов
/ 04 июня 2011

По какой-то причине в следующем коде evt.target.result пусто.Почему это?

function drop(evt) {
    evt.stopPropagation();
    evt.preventDefault();

    var file = evt.dataTransfer.files[0];

    handleFiles(file, evt.target);
}

function handleFiles(file, target) {
    loadSongAnimate();

    var reader = new FileReader();

    // init the reader event handlers
    reader.onloadend = handleReaderLoadEnd;

    // begin the read operation
    reader.readAsDataURL(file);
}

function handleReaderLoadEnd(evt) {
    alert('Passing this: ' + evt.target.result);
    document.getElementById('audioTagId').src = evt.target.result;
}

Ответы [ 2 ]

8 голосов
/ 04 июня 2011

Из подробного руководства :

onloadend
Вызывается после завершения чтения, независимо от того, успешно оно или нет.Это вызывается после onload или onerror.

Я подозреваю, что у вас возникла ошибка.Добавьте обратный вызов onerror и посмотрите, что скажет reader.error.Возможно, вы захотите использовать отдельные обратные вызовы onerror, onabort и onload вместо onloadend:

onabort
Вызывается при прекращении операции чтения.

onerror
Вызывается при возникновении ошибки.

onload
Вызывается при успешном завершении операции чтения.

Это может упростить обработку отдельных событий.


В своем комментарии вы говорите, что получаете «ошибку 2» из другого тонкого руководства :

Константа : SECURITY_ERR
Значение : 2
Описание : к файлу не удалось получить доступ из соображений безопасности.

Похоже, вы получили "разрешение отклонено"ошибка.

1 голос
/ 12 июля 2011

Я редактировал и просматривал файл по локальному файлу: // протокол.Когда вы ссылаетесь на локальный файл внутри другого локального файла, пустые заголовки в указанном локальном файле с ошибками безопасности выброса.

Извлеченный урок ... всегда также загружаются на сервер для тестирования.Я бы сэкономил мне много времени на Google и много волос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...