Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 动态图导出图像createCanvas不是一个函数_Javascript_Dygraphs - Fatal编程技术网

Javascript 动态图导出图像createCanvas不是一个函数

Javascript 动态图导出图像createCanvas不是一个函数,javascript,dygraphs,Javascript,Dygraphs,我一直在尝试实现图形图像的导出,因此,我一直遇到一个动态图形。createCanvas不是一个函数错误 下载了上一个链接的本地副本并使其正常工作,然后尝试将链接从更改为动态图库 <script type="text/javascript" src="http://dygraphs.com/dygraph-dev.js"></script> 到 正如在我的应用程序中使用的,然后抛出Dygraph.createCanvas不再是函数 我遗漏了什么,函数似乎存在于库中,为什么

我一直在尝试实现图形图像的导出,因此,我一直遇到一个动态图形。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;
};