1

您好我正在尝试使用 Jquery 文件上传。我已经让它在 FireFox 和 Chrome 上正常工作。像往常一样,IE 必须脱颖而出,发脾气,让我们的生活更有趣。当我点击上传按钮时出现此错误。有没有人遇到过这个错误以及关于它为什么会发生的任何建议?

SCRIPT438:对象不支持属性或方法“查找”jquery.ui.widget.js,第 479 行字符 3

我在 IE9 中遇到问题。我认为同样的问题也存在于 IE7 和 IE8 中。

这是一段代码。

我在这里使用的是 JSRender 而不是 Jquery 模板,但它不应该有很大的不同,因为我使用的是我自己的回调。

var oXHR = {};
var iUpload =1;

$(document).ready(function() {
    // Stuff to do as soon as the DOM is ready;

    'use strict';


    // Initialize the jQuery File Upload widget:
    $('#fileupload').fileupload({
        // Uncomment the following to send cross-domain cookies:
        //xhrFields: {withCredentials: true},
        dataType: 'json',
        url: filepath,
        formData: data,
        dropZone: $('#dropcontainer'),
        fileInput: $('input:file'),
        add: function(e, data) {

            $('#fileslist').prepend($.render([{ ID: 'upload'+iUpload, NAME: data.files[0].name, SIZE: data.files[0].size }], 'fileUploadTemplate'));

            data.context = 'upload'+iUpload;
            oXHR['upload'+iUpload] = data;

            iUpload++;
        },
        progress: function(e, data) {

            var progress = parseInt(data.loaded / data.total * 100, 10)/100;
            $('#filespending'+data.context).css('backgroundPosition',-350+(350*progress));

        },
        done: function(e, data) {
            var filedata = jQuery.parseJSON(data.jqXHR.responseText);

            console.log(filedata)
            if(filedata.STATUS){
                $('#filespending'+data.context).remove();

                $('#fileslist').prepend($.render([{ FILEID: filedata.VALUE.FILEID, NAME: filedata.VALUE.NAME, SIZE: filedata.VALUE.FILESIZE,DATEMODIFIED:filedata.VALUE.DATEMODIFIED }], 'fileListTemplate'));

            }
            else{
                $('#filespending'+data.context).addClass('erroruploadingfile');

            }



        },
        start: function(e){
            console.log('start')
            console.log(JSON.stringify(e))
        }

    });

    // Enable iframe cross-domain access via redirect option:
    $('#fileupload').fileupload(
        'option',
        'redirect',
        window.location.href.replace(
            /\/[^\/]*$/,
            '/cors/result.html?%s'
        )
    );

    $('#fileupload').unbind();
    $('#fileupload').click(function(){
        var i = 1;
        $.each(oXHR, function(key, value) {
            console.log(JSON.stringify(oXHR[key]))
            oXHR[key] = oXHR[key].submit();

            i++;
            if(i == iUpload) {
                iUpload = 1;
                oXHR = {};
            }

        });

    });

    // Show feedback on dragover
    $(document).bind('dragover', function(e) {
        var dropZone = $('#dropcontainer'),
            timeout = window.dropZoneTimeout;
        if(timeout) {
            clearTimeout(timeout);
        }
        if(e.target === dropZone[0]) {
            dropZone.addClass('containerdroppable');
        } else {
            dropZone.removeClass('containerdroppable');
        }
        window.dropZoneTimeout = setTimeout(function () {
            window.dropZoneTimeout = null;
            dropZone.removeClass('containerdroppable');
        }, 100);
    });

    $(document).bind('drop dragover', function (e) {
        e.preventDefault();
    });

});

我也在使用 jQuery UI Widget 1.9.1+amd

4

1 回答 1

1

我设法改进了一个更好的插件,它也适用于 IE7+ 浏览器和 Mac 浏览器。

http://fineuploader.com/

无需 JQuery 即可轻松实现和工作。

于 2013-01-15T18:26:00.463 回答