我无法在IE8中使用uploadify(jQuery插件),它可以在所有其他浏览器中正常工作。
当我上传文件时,我收到此错误:
Object不支持此属性或方法
这是在uploadify.js中的这一行:
document.getElementById(jQuery(this).attr('id') + 'Uploader').startFileUpload(ID, false);
我无法理解。
JavaScript看起来像这样:
<script type="text/javascript">
$(document).ready(function() {
var scriptData;
$.get('/lib/upload_params.php', {'key': "files/<?=random?>/"},
function(data) {
scriptData = {
'AWSAccessKeyId': data.AWSAccessKeyId,
'key': encodeURIComponent(data.key),
'acl': "private",
'policy': encodeURIComponent(data.policy),
'signature': encodeURIComponent(encodeURIComponent(data.signature)),
'success_action_status': "201",
'folder':'',
'Filename':''
};
// $('#file').uploadifySettings('scriptData',scriptData);
start_uploadify();
},
"json" );
function start_uploadify() {
$('#file').uploadify({
'uploader' : 'http://domain.com/lib/uploadify/uploadify.swf',
'script' : 'http://cdn.domain.com',
'multi' : false,
'buttonImg' : 'http://domain.com/images/select_button.png',
'rollover' : true,
'width' : '131',
'height' : '40',
'sizeLimit' : '1073741824',
'auto' : false,
'method' : 'post',
'scriptData' : scriptData,
'scriptAccess' : 'always',
'wmode' : 'transparent',
onSelect : function(event, queueID, fileObj) {
$('#send_options').show().addClass('on');
$('#fileUploader').css('visibility', 'hidden');
$('#fileQueue').css({'margin-top' : '-40px', 'visibility' : 'visible'});
},
onComplete : function(event, queueID, fileObj, response, data) {
//alert(fileObj.name);
$('#upload_progess').html("<strong>Upload complete</strong><br />We are now processing your file...");
$('#fn').val(fileObj.name);
$('#fs').val(fileObj.size);
$('#form_1').submit();
},
'onError' : function(e, queueID, fileObj, errorObj){
//alert( dump(scriptData) );
if(errorObj.info == 201){
//$('#file'+queueID).remove();
} else {
alert(errorObj.type+' error:'+errorObj.info+'. Sorry! (try again later)');
}
},
'folder' : '',
'fileDataName' : 'file'
});
}
$('#send').live('click', function() {
$('#file').uploadifyUpload();
$('#send_options').hide();
$('#upload_progress').show();
});
$('#change_file').live('click', function() {
$x = $('#send_options');
$y = $('#fileUploader');
$z = $('#fileQueue');
if ($x.hasClass('on')) {
$x.removeClass('on').hide();
$y.css('visibility', 'visible');
$z.css('visibility', 'hidden');
} else {
$x.addClass('on');
}
});
$('#method_2').delegate('', 'click', function() {
$('.wrap_to').show();
});
$('#method_1').delegate('', 'click', function() {
$('.wrap_to').hide();
});
});
答案 0 :(得分:1)
不确定这是否会对您有所帮助,但我刚遇到一个可能与之相关的奇怪的IE8错误。如果你有一个名为“change_file”的函数并且有一个类似<a onclick="change_file()">
的链接,那么在包含<input name="change_file">
的表单中你会得到“对象不支持这个属性或方法”的错误,那就是哦 - 所以无益的。
嗯,刚刚对此进行了一些挖掘,看来它不仅仅是“change_file”它不喜欢,它是js函数名称和放大器中的任何重叠。输入名称。这实际上更有意义,当它试图找出什么是“change_file”时,它必须首先查看表单元素,然后找到表单元素,但后来无法弄清楚为什么你要把它当作对待一个功能。
那么,也许你有一个名为“jQuery”的输入? (可能是“jQuery(this).attr('id')”。我尝试了一个名为“document”的文件,但它找到了正常的文档就好了。)
答案 1 :(得分:1)
删除此行:
$('#fileUploader').css('visibility', 'hidden');
为我解决了这个问题。我假设IE在设置为“隐藏”之后无法再找到该元素。
答案 2 :(得分:0)
这一行看起来很可疑:
$('#fileUploader').css('visibility', 'hidden');
尝试更改为
$('#fileUploader').css({'visibility': 'hidden'});
答案 3 :(得分:0)
由于某种原因,IE不喜欢var名称与jQuery对象名称相同,例如:
var field1 = $('#field1')。val();
IE不喜欢这样,所以我将var field1更改为var field1a并且它可以工作。