使用Canvg将svg转换为png:"target.childnodes未定义“;错误
Convert svg to png using Canvg: "target.childnodes is undefined" error
我有一个SVG图形,我想将其转换为PNG,然后作为下载提供。如果我选择SVG并使用jQuery创建画布元素,我会经常在标题中得到错误。如果我使用像createElement
和getElementById
这样的基本javascript函数,它似乎可以正常工作。
那么这个错误是什么意思呢?如果我看一下canvg
源代码,target
似乎是canvg
方法中的canvas
(请参阅下面的代码)。但它当然没有任何孩子,我没有附加任何其他内容
这是我的代码:
var svg = $('#chart')[0],
canvas = $("canvas"),
serializer = new XMLSerializer(),
svgString = serializer.serializeToString(svg);
canvas.width = svg.width;
canvas.height = svg.height;
canvg(canvas, svgString);
不能将jQuery对象传递给canvg,必须传递一个元素。
在我看来,如果您确实传递了一个容器,那么canvg确实会检查自己,因此它必须检索画布元素
实际上他们甚至不这么做。。。我不知道他们在调查childNodes,但他们确实在调查。(如果你传递另一个HTMLElement,它会抛出target.getContext is not a function
错误…)
与任何其他HTML元素一样,CanvasElement确实实现了childNodes
属性,因此它们肯定会检查target.childNodes.length
,如果是true,则在列表中检查画布元素,否则使用画布 如果他们不检查(target.childNodes && target.childNodes.length)
,这一次调用将抛出您得到的错误。
因此,对您来说,简单的解决方法就是设置canvas = $("canvas")[0]
。
相关文章:
- 铬:“;未捕获的语法错误:意外的标记:"
- 可以设置“;文件名"发生错误时显示的内联脚本标记的
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 检测电话窃听,即:<a href="电话:xxx">在UIWebview上
- 使用“+="操作人员
- //而不是在src=“”上使用http://"属性
- "未捕获的语法错误:意外的标记}"
- 可以<脚本类型=“;text/javascript”>window.location=“/"</
- "实例范围”;TypeScript类的getter/setter
- Javascript复选框函数:;缺少:在属性id之后"
- "“;变量未引用正确的对象
- "日期“;AJAX请求返回的类型值未定义
- 得到"TypeError:无法读取属性'filename'未定义的“;调用“npm start
- Soundcloud api"未捕获的类型错误:无法读取属性'uri'“未定义”;
- "工具提示"jQuery插件坏了
- "锻造;React中的表达式
- 使用Canvg将svg转换为png:"target.childnodes未定义“;错误
- 为什么smooth scrolling.js抛出了一个"$target.offset(..)未定义”;错误
- HTML嵌入的PDF所有链接覆盖在一个新的选项卡中打开(target="_blank")
- 如何获得"这个“;背景图像's的url使用“$event.target”;以离子模态显示