こんにちは、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 も使用しています