javascript - Safari 中的 html2canvas 不在 SVG 路径上呈现 Javascript style.fill

标签 javascript svg path fill html2canvas

我正在尝试解决这个问题:在 Apple Safari 中,我的 <div id="wrap">正在使用 html2canvas 按预期正确呈现,但任何 SVG 路径除外,例如<path id="test">我已经使用 Javscript 进行了修改:

document.getElementById('test').style.fill = 'blue';

PNG 文件在 Mac 和 PC 上的 Firefox 和 Chrome 中都能正确下载。但是,在 Safari 中(在台式机和移动设备上),PNG 文件将被原封不动地下载。

我想不出如何在 Safari 中实现这一点。

我在遵循我在我的网站上使用的基本原则的同时创建了这个示例:

  1. 网站显示黑色三 Angular 形。
  2. 点击“点击我!”路径填充为“蓝色”,正在下载 PNG。

在 Safari 上,下载的 PNG 文件显示一个黑色三 Angular 形,而在所有其他浏览器上,PNG 文件显示屏幕上显示的蓝色三 Angular 形。

这是我使用 html2canvas.min.js library 的示例:

function saveCanvas() {
  document.getElementById('test').style.fill = 'blue';
  html2canvas(document.querySelector("#wrap"))
    .then(canvas => {
      var image = canvas.toDataURL("image/png")
          .replace("image/png", "image/octet-stream");
      var a = document.createElement('a');
      a.href = image;
      a.download = 'image.png';
      a.click();
    });
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/0.5.0-beta4/html2canvas.min.js"></script>
<div id="wrap">
  <svg height="210" width="400">
    <path id="test" d="M150 0 L75 200 L225 200 Z" />
  </svg>
</div>
<div onclick="saveCanvas();"> Click Me!</div>

最佳答案

https://github.com/niklasvh/html2canvas/issues/1543

// Not working.
$('#canvas svg .BODY').css('fill', 'blue');
// Working.
$('#canvas svg').append('<style type="text/css">.BODY{fill:blue;}</style>');

关于javascript - Safari 中的 html2canvas 不在 SVG 路径上呈现 Javascript style.fill,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64016207/

相关文章:

javascript - 在 PerformanceTiming 中,AJAX 请求时间对流程模型的哪一部分有贡献?

javascript - 获取资源,计算哈希值,返回 promise

javascript - Jquery 处理多项选择

javascript - SVG - 如何绘制画笔污点?

java - 在 IntelliJ 中运行应用程序和运行 JAR 文件的区别

javascript - 动态 dojo/on 事件

javascript - 使 SVG 图标出现在 JS 待办事项列表项上

html - 我在 svg 文件中工作,动画在 firefox 中不起作用,我在图像标签中使用 svg

java - Java中设置PATH的问题

cocoa - AMPathPopUpButton 类在哪里声明?