Highcharts nodeName未定义

时间:2012-03-16 13:36:19

标签: javascript html prototypejs highcharts scriptaculous

当使用由highcharts生成的图表并将其导出到SVG时,我每6秒会收到大量错误,大约1000(nodeName of undefined)

负责的代码是:

element = wrapper.element,
nodeName = element.nodeName, // <---- Here (Cannot read property 'nodeName' of undefined)
renderer = wrapper.renderer,
skipAttr,
attrSetters = wrapper.attrSetters,
shadows = wrapper.shadows,
hasSetSymbolSize,
ret = wrapper;

堆栈跟踪(在Chrome 17.0.963中)

Uncaught TypeError: Cannot read property 'nodeName' of undefined
SVGElement.attr highcharts.src.js:2008
init.Effect.HighchartsTransition.Class.create.update prototype-adapter.src.js:86
(anonymous function) effects.js:1
Effect.Base.Class.create.loop effects.js:1
Effect.ScopedQueue.Class.create.loop effects.js:1
b prototype.js:1

重新创建的小提琴here,重现点击该系列的开/关,然后点击My Download链接,再次打开/关闭,然后点击再次在My Download链接上。

我的问题如下,这是我的代码,还是highcharts中的错误;我该如何解决?

2 个答案:

答案 0 :(得分:1)

得到了我正在寻找的答案;这是highcharts中的一个错误,修复了here

答案 1 :(得分:0)

我对Prototype框架并不熟悉,但我做了一些测试并查看了这段代码:

function getGraphSVG(options) {
    var svg;
    if (window.charts) {
        window.charts.each(function(pair) {
            svg = pair.value.getSVG(options);
            throw $break;
        });
    }

    return svg;
}

不知何故,这个each方法返回2个对象,其中一个是undefined。所以做简单的检查:

if (pair.value)
     svg = pair.value.getSVG(options);

或一行

pair.value && ( svg = pair.value.getSVG(options) );

它应该有用。