Una pensaba que Internet Explorer, a partir de la versión 9, había dejado de dar problemas. Que ya funcionaba todo lo que funcionaba en Chrome y en Firefox, y que bueno, la maquetación seguía yendo un poco a su bola pero nadie es perfecto.
Pues no.
En IE11, si tenéis que declarar una variable de tipo File, el navegador va a daros error al acceder a la página donde esté dicha variable. Porque al parecer IE no soporta el constructor File. Cuando aparece en una declaración o una instrucción, salta el error “Object doesn’t support this action“.
Como todos los errores de este estilo, está documentado hasta la saciedad en internet, y de hecho yo he encontrado dos “workarounds”, uno aquí ( en StackOverflow), y otro aquí.
Sin embargo, como yo soy más de ñapas que de otra cosa, quería compartir cómo he arreglado yo el error. Por si os pudiera servir a vosotras, en vez de tener que hacer el workaround:
El caso es que en mi código necesito una variable File, pero en ningún momento necesito usar el constructor. Uso un elemento p-fileUpload, que lleva ya dentro el/los archivo(s) que voy a manejar, y lo que hago es asignar a la variable de marras un objeto ya creado. ESO NO PROVOCA ERROR, SOLAMENTE EL CONSTRUCTOR. Así que basta con declarar la variable con tipo “any“, Y FUNCIONA TODO.
// editFile: File = new File([], "");
editFile:any;
Es decir, que el workaround solo es necesario si tenéis que usar el constructor de File obligatoriamente (en cuyo caso los dos enlaces que os pego más arriba os vendrán de perlas). Puede que incluso se pueda declarar la variable con tipo File, mientras no se use el constructor (lo podéis probar, pero yo no lo he hecho ni lo voy a hacer, soy muy feliz con mi variable de tipo any).
************************************************************
Espero que esta entrada pueda ser de utilidad, y si no, como siempre, aquí tenéis un gato para compensar.