1

こんにちは、Jquery File Upload を使用しようとしています。FireFox と Chrome で適切に動作するようになりました。いつものように、IE は私たちの生活をより面白くするために目立ち、癇癪を起こさなければなりません。アップロード ボタンを押すと、このエラーが発生します。誰かがこのエラーに遭遇したことがありますか?また、その理由についての提案はありますか?

SCRIPT438: オブジェクトはプロパティまたはメソッド 'find' jquery.ui.widget.js、479 行目の文字 3 をサポートしていません

IE9 で問題が発生しています。同じ問題がIE7とIE8にもあると思います。

これがコードの一部です。

ここでは Jquery テンプレートの代わりに JSRender を使用していますが、独自のコールバックを使用しているため、大きな違いはありません。

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 に答える