2013-01-09 62 views
1

嗨,我想使用Jquery文件上传。我已经正确使用了FireFox和Chrome。像往常一样,IE必须脱颖而出,并发脾气,让我们的生活更有趣。当我点击上传按钮时出现此错误。有没有人遇到过这个错误和任何建议,为什么它发生?SCRIPT438:对象不支持属性或方法'找到'

SCRIPT438:对象不支持属性或方法 '发现' jquery.ui.widget.js,线路479字符我在IE9中问题3

。我认为同样的问题在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控件1.9.1 + AMD

+2

哪个版本的IE?你能发布一个小的,完整的代码示例来重现这个问题吗? – apsillers

+0

jquery.ui.widget.js的哪个版本? –

+0

(要回答评论中提出的问题,请使用问题底部的“编辑”链接并用新信息编辑您的问题。 – apsillers

回答

1

我设法细更好的插件,与IE7 +浏览器和Mac浏览器以及效果很好。

http://fineuploader.com/

容易实现,而且没有jQuery的原理。

相关问题