data javascript google-chrome-extension data-uri

javascript - data - "Aw, Snap" cuando el uri de datos es demasiado grande



image url to base64 (1)

Es un error conocido de cromo . La solución recomendada es usar una URL blob . También vea Crear una Blob desde una cadena base64 en JavaScript .

Estoy escribiendo una extensión de Chrome que hace lo siguiente:

  1. Descarga un archivo de un sitio web a la memoria utilizando XMLHttpRequest
  2. Agrega datos adicionales al archivo y luego base64 codifica el resultado a la variable total_encoded_data
  3. Ofrece los datos al usuario utilizando <a href=data:application/octet-stream;charset=utf-8;base64,'' + total_encoded_data+'' download=''file.bin''>Click to Download</a> . Donde total_encoded_data se agrega a href usando jQuery.

He encontrado, a través de una búsqueda binaria manual, que si el tamaño de total_encoded_data es mayor que 2097100 caracteres, entonces recibiré un mensaje Aw, Snap cuando haga clic en el enlace. Si el tamaño es más pequeño, entonces puedo descargarlo como esperaba.

Además de probar el tamaño del archivo, también utilicé atoi para garantizar que la codificación de base64 sea válida y funciona sin errores.

Los mensajes Aw, Snap no producen ningún informe de bloqueo en chrome://crashes ni ningún resultado inesperado en chrome_debug.log

¿Cómo evito un mensaje Aw, Snap al servir un uri de datos donde la longitud de cadena codificada en base64 es mayor que 2097100?