Signature_pad: IE11 语法错误

创建于 2018-11-06  ·  7评论  ·  资料来源: szimek/signature_pad

您要请求功能或报告错误吗?
漏洞

当前的行为是什么?
我通过 package.json 在 angular6 中包含了 "signature_pad": "^3.0.0-beta.3"
它在所有浏览器中运行良好,但在 IE11 上,由于错误而无法加载网站。

image

没有任何描述的“语法错误”出了什么问题。

最有用的评论

尝试以这种方式导入:
更改自:
import SignaturePad from 'signature_pad';
到:
import * as SignaturePad from 'signature_pad/dist/signature_pad';

所有7条评论

我不知道 Angular 6 构建过程看起来如何,但您应该使用与编译自己的代码相同的 Babel 配置来编译它。

您还可以使用 webpack resolve.alias功能(未测试),它应该允许您加载已经编译的版本:

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

感谢你的快速回复。
我会试一试。 如果您的想法不起作用,我也会尝试使用 babel polyfill。 我以前从未使用过它。

尝试以这种方式导入:
更改自:
import SignaturePad from 'signature_pad';
到:
import * as SignaturePad from 'signature_pad/dist/signature_pad';

功能下载(数据URL,文件名){
if (navigator.userAgent.indexOf("Safari") > -1 && navigator.userAgent.indexOf("Chrome") === -1) {
window.open(dataURL);
}
### //在 app.js 上添加以下语句 - 它的工作原理是 IE 11 不支持其他两个
否则如果(window.navigator && window.navigator.msSaveOrOpenBlob){var blobwin = dataURLToBlob(dataURL);window.navigator.msSaveOrOpenBlob(blobwin, 文件名);}
别的 {
var blob = dataURLToBlob(dataURL);
var url = window.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);

}
}

@sdqwerty的解决方法对我有用。 但是,值得注意的是 webpack 有一个名为mainFields的字段,默认为['browser', 'module', 'main'] 。 这些是按优先顺序排列的,并且 signature_pad 在package.json中不包含browser ,因此模块会被拾取。 这映射到.m.js文件,该文件包括 ES6 语法,如 class —— IE11 不支持。

@szimek我建议您根据 npm 的建议更新 package.json 以包含浏览器字段:
https://docs.npmjs.com/files/package.json#browser

这应该可以解决这些 IE11 问题。

这对我有用:

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

使用 Laravel-Mix:

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

我不知道 Angular 6 构建过程看起来如何,但您应该使用与编译自己的代码相同的 Babel 配置来编译它。

您还可以使用 webpack resolve.alias功能(未测试),它应该允许您加载已经编译的版本:

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

v3.0.0-beta.4 编译版不支持 IE11,因为class关键字。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

derUli picture derUli  ·  3评论

Emmark picture Emmark  ·  4评论

hostcia picture hostcia  ·  6评论

khawye picture khawye  ·  4评论

erangaapp picture erangaapp  ·  8评论