您好我正在尝试使用 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