HTML5 FileReader:无法转换JavaScript参数

HTML5 FileReader:无法转换JavaScript参数,javascript,html,firefox,filereader,Javascript,Html,Firefox,Filereader,我在尝试使用FileReader读取本地文件时遇到了一个奇怪的错误(我使用的是Firefox 16.0.2): [20:57:48.440]reader=newfilereader() [20:57:48.453][对象文件阅读器] -- [20:58:15.104]reader.onload=函数(evt){alert('ok');} [20:58:15.114](函数(evt){alert(“ok”);}) -- [20:58:32.162]reader.readAsText('test.t

我在尝试使用
FileReader
读取本地文件时遇到了一个奇怪的错误(我使用的是Firefox 16.0.2):

[20:57:48.440]reader=newfilereader()
[20:57:48.453][对象文件阅读器]
--
[20:58:15.104]reader.onload=函数(evt){alert('ok');}
[20:58:15.114](函数(evt){alert(“ok”);})
--
[20:58:32.162]reader.readAsText('test.txt');
[20:58:32.170][Exception…”无法转换JavaScript参数arg 0[nsIDOMFileReader.readAsText]“nsresult:“0x8057009(NS_ERROR\u XPC\u BAD\u convert\u JS)”位置:“JS frame::Web控制台:::第1行”数据:否]

有没有关于如何修复它的想法?

文件阅读器接受文件或Blob参数。不是类似于文件名的字符串。该文件来自输入类型=File的拖放操作

有关更多详细信息,请参阅本文或阅读下面的图像代码

$(function () {
        if (Modernizr.draganddrop) {
            var dropTarget = $('#dropTarget').get(0);

            dropTarget.addEventListener('dragover', function (e) {
                e.preventDefault();
            });

            dropTarget.addEventListener('drop', function (e) {
                e.preventDefault();

                if (e.dataTransfer.files === undefined) {
                    // IE doesn't support file drops yet.
                    $('#dropTarget').text('Drag & Drop of files is not supported');
                    return;
                }

                $.each(e.dataTransfer.files, function () {
                    var file = this;
                    var reader = new FileReader();
                    reader.onload = function () {
                        $('<img>')
                            .attr('title', file.name)
                            .attr('src', this.result)
                            .css('width', '75%')
                            .appendTo('#images');
                    };
                    reader.readAsDataURL(file);
                });
            });
        }
        else {
            $('#dropTarget').text('Drag & Drop is not supported');
        }
    });
$(函数(){
if(现代化draganddrop){
var dropTarget=$('#dropTarget').get(0);
dropTarget.addEventListener('dragover',函数(e){
e、 预防默认值();
});
dropTarget.addEventListener('drop',函数(e){
e、 预防默认值();
if(e.dataTransfer.files===未定义){
//IE还不支持文件删除。
$('#dropTarget')。text('不支持拖放文件');
返回;
}
$.each(如dataTransfer.files、function(){
var file=this;
var reader=new FileReader();
reader.onload=函数(){

$(“那么你是在Mozilla的控制台中输入的吗?在Chrome中:var fr=new FileReader();未定义的fr.onload=function(e){alert(e);};function(e){alert(e);}fr.readAsText('test.txt');未定义的fr.onload=function(e){alert(e);};function(e)}fr.readAsText('test.txt');未定义的,这不是真正可读的。试试Chrom这也很有趣:回调中没有的警报被调用,因此没有错误,只是回调没有被调用。
$(function () {
        if (Modernizr.draganddrop) {
            var dropTarget = $('#dropTarget').get(0);

            dropTarget.addEventListener('dragover', function (e) {
                e.preventDefault();
            });

            dropTarget.addEventListener('drop', function (e) {
                e.preventDefault();

                if (e.dataTransfer.files === undefined) {
                    // IE doesn't support file drops yet.
                    $('#dropTarget').text('Drag & Drop of files is not supported');
                    return;
                }

                $.each(e.dataTransfer.files, function () {
                    var file = this;
                    var reader = new FileReader();
                    reader.onload = function () {
                        $('<img>')
                            .attr('title', file.name)
                            .attr('src', this.result)
                            .css('width', '75%')
                            .appendTo('#images');
                    };
                    reader.readAsDataURL(file);
                });
            });
        }
        else {
            $('#dropTarget').text('Drag & Drop is not supported');
        }
    });