2010-10-07 4 views
1

Je n'arrive pas à uploadify (plugin jQuery) pour fonctionner dans IE8, ça marche bien dans tous les autres navigateurs.Uploadify Error in IE8

Quand je vais télécharger le fichier que je reçois cette erreur:

objet ne prend pas en charge cette propriété ou méthode

Et il est sur cette ligne en uploadify.js:

document.getElementById(jQuery(this).attr('id') + 'Uploader').startFileUpload(ID, false); 

Je ne peux pas comprendre.

Le JavaScript ressemble à ceci:

<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

À quoi ressemblent vos balises '

0

Cette ligne semble suspect:

$('#fileUploader').css('visibility', 'hidden'); 

Essayez de changer

$('#fileUploader').css({'visibility': 'hidden'}); 
+0

La syntaxe JS n'est pas correcte. – RoToRa

+0

corrigé comme suggéré – Clicktricity

1

Je ne sais pas si cela vous aidera, mais je rencontré un bug IE8 étrange qui pourrait être lié. Si vous avez une fonction appelée "change_file" et un lien comme <a onclick="change_file()">, à l'intérieur d'un formulaire qui contient un <input name="change_file"> vous obtenez cette erreur "L'objet ne supporte pas cette propriété ou méthode" qui est oh-si inutile. Hmm, juste fait un peu plus creuser dans ce domaine, il semble que ce n'est pas seulement "change_file" il ne aime pas, il est tout chevauchement dans le nom de la fonction & noms d'entrée. Cela fait un peu plus de sens en réalité, quand il essaie de trouver ce que "change_file" est il doit d'abord regarder les éléments de formulaire, et trouve cet élément de forme, mais ne peut pas comprendre pourquoi vous essayez de le traiter comme une fonction. Donc, peut-être avez-vous une entrée nommée "jQuery"? (Il se peut que "jQuery (this) .attr ('id')" .J'ai essayé un nommé "document", mais il trouve le document normal très bien.)

1

suppression de cette ligne:

$('#fileUploader').css('visibility', 'hidden'); 

résolu le problème pour moi. Je suppose que IE ne peut plus trouver l'élément après qu'il a été mis à "caché".