javascript - 带有 Canvas 的 DOM

标签 javascript html svg canvas screenshot

我正在尝试 MDN 中的示例,其中 HTML 片段被绘制到 Canvas 上。 https://jsfiddle.net/c5xrkgL3/

但是我添加了一个  在“喜欢”这个词中,现在它不再起作用了。

var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');

var data = '<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200">' +
          '<foreignObject width="100%" height="100%">' +
          '<div xmlns="http://www.w3.org/1999/xhtml" style="font-size:40px">' +
            '<em>I</em> li&nbsp;ke ' +
            '<span style="color:white; text-shadow:0 0 2px blue;">' +
            'cheese</span>' +
          '</div>' +
          '</foreignObject>' +
          '</svg>';

data = encodeURIComponent(data);


var img = new Image();

img.onload = function() {
  ctx.drawImage(img, 0, 0);
  console.log(canvas.toDataURL());

  canvas.toBlob(function(blob) {
    var newImg = document.createElement('img'),
    url = URL.createObjectURL(blob);

    newImg.onload = function() {
      // no longer need to read the blob so it's revoked
      URL.revokeObjectURL(url);
    };

    newImg.src = url;
    document.body.appendChild(newImg);
  });
}

img.src = "data:image/svg+xml," + data

https://jsfiddle.net/c5xrkgL3/1/

知道我应该做什么才能使  示例工作(同时保留实际的   在那里)?

原始 MDN 文章:https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Drawing_DOM_objects_into_a_canvas

最佳答案

 not a valid XML entity

只有 5 个有效的 XML 实体

  • &
  • '
  • <
  • >

HTML 有一个更长的有效实体列表,您可以从中获取  ,但您没有使用 HTML 文档。

您需要使用  ,而不是  ,例如like 或作为标记:li ke

关于javascript - 带有 Canvas 的 DOM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50313374/

相关文章:

css - SVG 图像仅在直接访问时加载

html - 如何使用 Masonry 创建图像网格?

html - 在 Perl 中仅按名称或 ID 解析特定的 HTML 标记?

java - 尝试使用 java 从 ccd.xml 读取 HtmlElement

javascript - 无法获取页面显示的结果

css - 使用 CSS 从 spritesheet 插入 SVG 并为其着色

javascript - DataMaps.js - 网络天气 map (入站和出站弧线)

javascript - 在 ruby​​/rails 中创建交互式 ajax javascript 小部件

javascript - JS-网格 : How to set default value

javascript - Highcharts 像选择一样留下选择