Signature_pad: Error de sintaxis de IE11

Creado en 6 nov. 2018  ·  7Comentarios  ·  Fuente: szimek/signature_pad

¿Desea solicitar una característica o informar un error?
Error

¿Cuál es el comportamiento actual?
He incluido "signature_pad": "^3.0.0-beta.3" en angular6 a través de package.json
Funciona bien en todos los navegadores, pero en IE11 el sitio web no se puede cargar debido a un error.

image

"Syntaxerror" sin ninguna descripción de lo que está mal.

Comentario más útil

Intenta importar de esta manera:
cambiar de:
import SignaturePad from 'signature_pad';
para:
import * as SignaturePad from 'signature_pad/dist/signature_pad';

Todos 7 comentarios

No tengo idea de cómo se ve el proceso de compilación de Angular 6, pero debe compilarlo usando la misma configuración de Babel que usa para compilar su propio código.

También puede usar la función webpack resolve.alias (no probada), que debería permitirle cargar la versión ya compilada en su lugar:

module.exports = {
  //...
  resolve: {
    alias: {
      signature_pad: 'signature_pad/dist/signature_pad.js'
    }
  }
};

Gracias por tu pronta respuesta.
Voy a darle una oportunidad. También probaré un polyfill de babel si su idea no funciona. Nunca lo usé antes.

Intenta importar de esta manera:
cambiar de:
import SignaturePad from 'signature_pad';
para:
import * as SignaturePad from 'signature_pad/dist/signature_pad';

descarga de funciones (URL de datos, nombre de archivo) {
if (navigator.userAgent.indexOf("Safari") > -1 && navigator.userAgent.indexOf("Chrome") === -1) {
ventana.abrir(URLdatos);
}
### //Agregue la siguiente declaración en app.js: funciona porque los otros dos no son compatibles con IE 11
otra cosa si (ventana.navegador && ventana.navegador.msSaveOrOpenBlob){var blobwin = dataURLToBlob(dataURL);window.navigator.msSaveOrOpenBlob(blobwin, nombre de archivo);}
demás {
var blob = dataURLToBlob(dataURL);
var url = ventana.URL.createObjectURL(blob);

var a = document.createElement("a");
a.style = "display: none";
a.href = url;
a.download = filename;

document.body.appendChild(a);
a.click();

window.URL.revokeObjectURL(url);

}
}

La solución alternativa de @sdqwerty funcionó para mí. Sin embargo, vale la pena señalar que webpack tiene un campo llamado mainFields que por defecto es ['browser', 'module', 'main'] . Estos están en orden de prioridad, y signature_pad no incluye un browser en package.json , por lo que el módulo se selecciona. Esto se asigna al archivo .m.js , que incluye la clase de sintaxis ES6, que IE11 no admite.

@szimek , le recomiendo que actualice package.json para incluir un campo de navegador según las recomendaciones de npm aquí:
https://docs.npmjs.com/files/package.json#browser

Eso debería aclarar estos problemas de IE11.

Esto funcionó para mí:

module.exports = {
  resolve: {
    alias: {
      'signature_pad': 'signature_pad/dist/signature_pad' // <- hier without '.js' at the end!
    }
  }
};

Y con Laravel-Mix:

mix.webpackConfig({
    resolve: {
        alias: {
            'signature_pad': 'signature_pad/dist/signature_pad',
        }
    }
});

No tengo idea de cómo se ve el proceso de compilación de Angular 6, pero debe compilarlo usando la misma configuración de Babel que usa para compilar su propio código.

También puede usar la función webpack resolve.alias (no probada), que debería permitirle cargar la versión ya compilada en su lugar:

module.exports = {
  //...
  resolve: {
    alias: {
      signature_pad: 'signature_pad/dist/signature_pad.js'
    }
  }
};

La versión compilada v3.0.0-beta.4 no es compatible con IE11 debido a la palabra clave class .

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

chitgoks picture chitgoks  ·  5Comentarios

Sparticuz picture Sparticuz  ·  7Comentarios

50l3r picture 50l3r  ·  3Comentarios

rmmackay picture rmmackay  ·  7Comentarios

chenks picture chenks  ·  7Comentarios