Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

262
Visualizações
Chrome 83: no se puede cargar el archivo

Actualicé Chrome en la versión 83, y algunos de mis formularios que usan un componente de "carga Ajax" (más información a continuación) no funcionan. He leído los problemas de la nueva versión ( https://developers.google.com/web/updates/2020/05/nic83 ) pero no encuentro nada relacionado en formularios, iframes, archivos, ajax o publicaciones.

Intentaré publicar una muestra en Fiddler, pero quiero saber si alguien sabe algo al respecto.

Por otro lado, en otros formularios tengo un cargador de múltiples archivos, arrastrar y soltar (dropzone.js) y funciona bien, pero no es fácil de convertir y necesito una solución rápida.

Una muestra ficticia (no tengo ningún sandbox para probar la carga): https://jsfiddle.net/drvespa/7ue8k94r/3/

  • En Chrome 83 (también lo probé en la versión Canary 85): no arroja ningún error porque el componente AjaxUpload no detecta el envío del formulario. La devolución de llamada se llama antes de que se realice el envío y la respuesta está vacía.
  • En Firefox: arroja un error porque el componente AjaxUpload está intentando deserializar 404 de la página de carga ficticia.

Publico la biblioteca en https://filebin.net/8sgsmq7sh14m0qen :

 /** * Ajax upload * Project page - http://valums.com/ajax-upload/ * Copyright (c) 2008 Andris Valums, http://valums.com * Licensed under the MIT license (http://valums.com/mit-license/) * Version 3.6 (26.06.2009) */
over 4 years ago · Santiago Trujillo
5 Respostas
Responde à pergunta

0

Acabo de establecer el atributo srcdoc en iframe igual a url en el componente AjaxUpload .

iframe.setAttribute('srcdoc', this._settings.action);

Ha resuelto mi problema.

Función en el archivo AjaxUpload.js:

 _createIframe: function(){ var id = getUID(); var iframe = toElement('<iframe src="javascript:false;" name="' + id + '" />'); iframe.setAttribute('id', id); iframe.setAttribute('srcdoc', this._settings.action); iframe.style.display = 'none'; document.body.appendChild(iframe); return iframe; }
over 4 years ago · Santiago Trujillo Relatório

0

Esta respuesta me ayudó a parchear nuestra copia de Atmail para que la carga de archivos adjuntos funcione nuevamente en Chrome 83. ¡Gracias!

La línea setAttribute anterior debe insertarse en el archivo AjaxUpload.js, dentro de la función '_createIframe'. Lo puse inmediatamente debajo de la llamada setAttribute('id', id) y eso funcionó :)

over 4 years ago · Santiago Trujillo Relatório

0

El problema es que la biblioteca está creando un <iframe>, con un atributo src , y escucha el evento de load de ese iframe justo después de que lo hizo.

 /** * Creates iframe with unique name */ _createIframe: function () { // unique name // We cannot use getTime, because it sometimes return // same value in safari :( var id = getUID(); // Remove ie6 "This page contains both secure and nonsecure items" prompt var iframe = toElement('<iframe src="javascript:false;" name="' + id + '" />'); iframe.id = id; iframe.style.display = 'none'; d.body.appendChild(iframe); return iframe; },

luego en el método de submit

 var iframe = this._createIframe(); // some synchronous operations addEvent(iframe, 'load', function (e) { // ...

Dado que este iframe tiene un atributo src , Chrome comenzará a cargarse, y dado que su src es una URL falsa, esta operación en realidad se resuelve de forma síncrona, lo que significa que el evento de carga ya está configurado para activarse en la siguiente iteración del bucle de eventos.

 const frame = document.createElement('iframe'); frame.src = 'javascript:return false'; document.body.append(frame); frame.addEventListener('load', (evt) => console.log('loaded', frame.src) ); setTimeout( () => frame.src = "about:blank", 0 ); // Results in Chrome: // loaded javascript:return false // loaded about:blank // Results in Firefox: // loaded about:blank

Entonces, el único evento de load que recibe esta biblioteca es ese evento de carga inicial, de un documento vacío, y no el de la solicitud real.

Para solucionarlo, todo lo que necesita es eliminar este src="javascript:false;" del código de la biblioteca: https://jsfiddle.net/9phxmqjw/

over 4 years ago · Santiago Trujillo Relatório

0

Estábamos usando este antiguo complemento:

http://jquery.malsup.com/form/#opciones-objeto

Hay una opción que podría estar usando si fuera compatible con ie8 en algún momento de los últimos 10 años...

 { url: '/branded/image_upload', type: 'POST', iframe: false }

También tuvimos un truco de envoltorio <textarea></textarea> en la respuesta.

Este código se transmitió a través de muchas iteraciones jajaja.

over 4 years ago · Santiago Trujillo Relatório

0

¡Gracias! Además, para todos los que aún usan Opencart 1.5 después de esta actualización de Chrome, la carga de imágenes y documentos se corrige agregando:

 iframe.setAttribute('srcdoc', this._settings.action);

en \admin\view\javascript\jquery\ajaxupload.js

 var iframe = toElement('<iframe src="javascript:false;" name="' + id + '" />'); // src="javascript:false; was added // because it possibly removes ie6 prompt // "This page contains both secure and nonsecure items" // Anyway, it doesn't do any harm. iframe.setAttribute('id', id); iframe.setAttribute('srcdoc', this._settings.action); iframe.style.display = 'none'; document.body.appendChild(iframe);
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda