代码之家  ›  专栏  ›  技术社区  ›  mcottingham

HTMLtoIMAGE Chrome 64安全错误:未能从“CSStaseLeSeGET”读取'CSsReal'属性:不能访问规则

  •  2
  • mcottingham  · 技术社区  · 7 年前

    新的Chrome 64安全更新似乎打破了HTMLtoI图库。没有一个样式是正确计算和渲染的,就好像没有应用任何样式一样。

    有人知道解决方法吗?我需要把css放到服务器上并允许cors吗?

    1 回复  |  直到 7 年前
        1
  •  1
  •   tao    7 年前

    我刚刚修正了这个错误。

    分叉库并发出拉取请求。 在合并之前,您可以使用分叉回购协议: https://github.com/kmap-io/html-to-image

    通过替换目标 html-to-image 在你 package.json 用:

    "html-to-image": "git+https://github.com/kmap-io/html-to-image.git"
    


    关于虫子

    Chrome抱怨试图读取一个不存在的属性而抛出一个错误。Firefox也抱怨,但他们只发出警告,而不是错误。修复包括替换

    if (sheet.cssRules) {
      ...
    

    具有

    if (sheet.hasOwnProperty('cssRules')) {
      ...
    

    没有缺点(即:当 cssRules 存在于 sheet -这是一个样式表-脚本遍历规则并将其添加到文档中(如所需)。


    如何修补 (直到合并)。

    出于某种原因,用我提交更改的fork替换库的repo对这个包不起作用。我要求lib的作者添加关于如何在pull请求之后构建的说明,因为他们在readme pull请求中声明,并且欢迎贡献。在此之前,以下是如何使用 patch-package :

    • 添加 "prepare": "patch-package" 里面 scripts ,在您的项目中 包装袋
    • npm i patch-package --save-dev
    • node_modules/html-to-image/lib/embedWebFonts.js ,将第7行从
    try {
    

    if (sheet.hasOwnProperty('cssRules')) try {
    
    • npx patch-package html-to-image

    如果你有一个从头开始构建你的项目的部署脚本,你需要在调用之前应用补丁。 npm run build (或类似,取决于堆栈):

    git apply --ignore-whitespace patches/*.patch
    

    就这样。

    合并修复程序时,需要运行:

    npx patch-package html-to-image --reverse
    
    推荐文章