Javascript 动态图导出图像createCanvas不是一个函数
我一直在尝试实现图形图像的导出,因此,我一直遇到一个动态图形。createCanvas不是一个函数错误 下载了上一个链接的本地副本并使其正常工作,然后尝试将链接从更改为动态图库Javascript 动态图导出图像createCanvas不是一个函数,javascript,dygraphs,Javascript,Dygraphs,我一直在尝试实现图形图像的导出,因此,我一直遇到一个动态图形。createCanvas不是一个函数错误 下载了上一个链接的本地副本并使其正常工作,然后尝试将链接从更改为动态图库 <script type="text/javascript" src="http://dygraphs.com/dygraph-dev.js"></script> 到 正如在我的应用程序中使用的,然后抛出Dygraph.createCanvas不再是函数 我遗漏了什么,函数似乎存在于库中,为什么
<script type="text/javascript" src="http://dygraphs.com/dygraph-dev.js"></script>
到
正如在我的应用程序中使用的,然后抛出Dygraph.createCanvas不再是函数
我遗漏了什么,函数似乎存在于库中,为什么代码看不到它?我遇到了同样的问题。我为它创建了一个JSFIDLE: 提琴看起来有点奇怪,因为动态图表导出似乎不在CDN的任何地方,所以我不得不将它全部粘贴进去。但是,我为它链接到上游,所以你可以看到我没有使用旧版本 超级简单的人工示例,与演示站点相同。它不起作用。在以下情况下失败: 未捕获类型错误:Dygraph.createCanvas不是函数 编辑: 那么,看看dygraph utils代码: createCanvas只是一个创建画布的一行程序。因此,我将动态图导出中的相关行更改为:
canvas = document.createElement('canvas');
它成功了,但在下一行调用Dygraph.update时失败了。所以,我找到了它并将其修补到动态图表中。导出
Dygraph.Export.hack_update = function(self, o) {
if (typeof(o) != 'undefined' && o !== null) {
for (var k in o) {
if (o.hasOwnProperty(k)) {
self[k] = o[k];
}
}
}
return self;
};
Dygraph.Export.asCanvas = function (dygraph, userOptions) {
"use strict";
var options = {},
canvas = document.createElement('canvas');
Dygraph.Export.hack_update(options, Dygraph.Export.DEFAULT_ATTRS);
Dygraph.Export.hack_update(options, userOptions);
canvas.width = dygraph.width_;
canvas.height = dygraph.height_ + options.legendHeight;
Dygraph.Export.drawPlot(canvas, dygraph, options);
Dygraph.Export.drawLegend(canvas, dygraph, options);
return canvas;
};
这就行了。我说它可以使用引号,因为它仍然存在问题,例如正确打印轴标签,不能使用HiDPI显示,但至少不会崩溃。您能给我们一个JSFIDLE来帮助您吗?问候@LucidioVacas我不能,因为资源不是https,如果我在顶部链接上加载javascript控制台,我可以访问Dygraph.createCanvas,但在第二个链接上没有。我想知道这个函数现在是否是私有的,所以导出代码不能在Dygraphs 2.0上工作?谢谢,我会检查它的
canvas = document.createElement('canvas');
Dygraph.Export.hack_update = function(self, o) {
if (typeof(o) != 'undefined' && o !== null) {
for (var k in o) {
if (o.hasOwnProperty(k)) {
self[k] = o[k];
}
}
}
return self;
};
Dygraph.Export.asCanvas = function (dygraph, userOptions) {
"use strict";
var options = {},
canvas = document.createElement('canvas');
Dygraph.Export.hack_update(options, Dygraph.Export.DEFAULT_ATTRS);
Dygraph.Export.hack_update(options, userOptions);
canvas.width = dygraph.width_;
canvas.height = dygraph.height_ + options.legendHeight;
Dygraph.Export.drawPlot(canvas, dygraph, options);
Dygraph.Export.drawLegend(canvas, dygraph, options);
return canvas;
};