dom - 如何使用 Dart 将 SVG 元素保存到静态文件?

标签 dom svg dart

我必须在 Dart 中使用一些 DOM 操作来处理 SVG 元素。在“svg”标签下添加和更改一些元素后,我想将最终的 SVG 元素导出到静态文件。有什么API可以做到吗?

谢谢!

最佳答案

您可以使用 download <a> 上的属性元素。这告诉浏览器下载资源而不是导航到它。

您可以使用 innerHtml 获取 SVG 的内容.

这是一个例子。

首先,HTML:

<!DOCTYPE html>

<html>
  <head>
    <meta charset="utf-8">
    <title>Svgtest</title>
    <link rel="stylesheet" href="svgtest.css">
  </head>
  <body>
    <h1>Svgtest</h1>

    <div id="container">
      <svg xmlns="http://www.w3.org/2000/svg" version="1.1">
        <circle cx="100" cy="50" r="40" stroke="black"
        stroke-width="2" fill="red"/>
      </svg>
    </div>

    <script type="application/dart" src="svgtest.dart"></script>
    <script src="packages/browser/dart.js"></script>
  </body>
</html>

接下来是 Dart 代码:

import 'dart:html';

void main() {
  Element container = query('#container');
  String contents = container.innerHtml;

  Blob blob = new Blob([contents]);
  AnchorElement downloadLink = new AnchorElement(href: Url.createObjectUrlFromBlob(blob));
  downloadLink.text = 'Download me';
  downloadLink.download = 'svg_contents.svg';

  Element body = query('body');
  body.append(downloadLink);
}

以下是浏览器覆盖范围:http://caniuse.com/#feat=download在撰写本文时,Firefox、Chrome 和 Opera 支持 download属性。

(注意:无法使用 HTML5 直接将文件保存到 native OS 文件系统。)

关于dom - 如何使用 Dart 将 SVG 元素保存到静态文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18543787/

相关文章:

java - 访问子节点的长度返回原始计数的两倍

javascript - 在 iframe 更改时滚动到父框架的顶部?

javascript - 如何删除 d3.behavior.drag().on ("drag",...) 事件处理程序

internet-explorer - 为什么 Internet Explorer 不支持 SVG SMIL 动画

dart - 如何在 Dart 中将 `ByteData` 实例写入文件?

flutter - 抽屉小部件打开时如何修改背景的淡入淡出效果?

javascript - 如何添加一个div作为另一个div的背景?

javascript - 白天时间热图 - 颜色未显示

flutter - 如何在flutter中访问有状态小部件中的类变量?

angular - 可以在来自第三方库的 DOM 元素中渲染 Angular 2 组件吗?