1

我有一个 ruby​​-on-rails 应用程序,我正在尝试使用 highcharts/modules/canvas-tools.js。我继承了这个应用程序,并且其中不存在 highcharts 文件。我对 javascript 了解不多,所以我什至不确定应用程序如何使用这些资产。应该显示图表的页面没有。尝试查看图表时,我的 Chrome 控制台中出现以下错误:

Uncaught TypeError: Cannot read property 'prototype' of undefined 

控制台指的是这些行:

// Extend CanVG renderer on demand, inherit from SVGRenderer
extend(CanVGRenderer.prototype, SVGRenderer.prototype);

在 highcharts 文件的末尾:

}(Highcharts));

这是我的 application.js:

//= require jquery
//= require jquery-ui-1.10.2.custom
//= require twitter/bootstrap
//= require highcharts
//= require highcharts/modules/canvas-tools
//= require highcharts/modules/exporting
//= require bootstrap-typeahead
//= require rails
//= require autocomplete-rails
//= require_tree .

$(document).ready(function()     {
    $('.dropdown-toggle').dropdown();
} );

$(document).ready(function() {
    $('.popover-myasset').popover();
});

在其他情况下,我收到一个错误,说 highcharts 被多次加载,但我没有使用 Highstock,这显然是这个错误的根源。错误消息链接:http: //highcharts.com/errors/16

感谢您提供的任何建议。

4

3 回答 3

2

我也有这个错误-

未捕获的类型错误:无法读取未定义的属性“原型”

为了修复它,我将其添加到第 2931 行-

CanVGRenderer = (typeof(Highcharts.CanVGRenderer) != "undefined"
    ? Highcharts.CanVGRenderer : {},

由于扩展函数(highcharts.src.js 的第 128 行)在将变量传递给它时基本上做了完全相同的事情。

也是 canvas-tools.src.js 中的第 2897 行 -

if (CanvasRenderingContext2D) 

在 IE 中也会引发错误。本节来自于 2013 年 5 月 7 日更新的 canvg.js,但未由 highcharts 更新,现在应该是 -

if (typeof(CanvasRenderingContext2D) != 'undefined')
于 2013-07-30T20:19:17.997 回答
1

根据开发团队:

canvas-tools 不应该包含在脚本文件中。相反,Highcharts 会按需延迟加载。请参阅http://api.highcharts.com/highcharts#global.canvasToolsURL

https://github.com/highslide-software/highcharts.com/issues/2311

于 2014-06-20T19:47:38.190 回答
0

有几个问题。我所做的可能并不适用于所有情况。

我将 highcharts 要求语句放在以我使用它的视图命名的文件夹和文件中:

app/assets/
-javascripts
--foos
---foos.js
--application.js

foos.js 包含:

//= require highcharts
//= require highcharts/modules/canvas-tools
//= require highcharts/modules/exporting
于 2013-06-25T13:02:18.570 回答