Javascript GWT Chart.js实现抛出';无法获取属性';插入前';指未定义的或空的引用

Javascript GWT Chart.js实现抛出';无法获取属性';插入前';指未定义的或空的引用,javascript,java,gwt,html5-canvas,chart.js,Javascript,Java,Gwt,Html5 Canvas,Chart.js,我正在尝试将Chart.js charts()集成到当前的GWT项目中。我让项目识别javaScript,但当我尝试实例化图表时,我的浏览器抛出以下javaScript错误: 无法获取未定义或空引用的属性“insertBefore” 使用以下似乎是问题根源的GWT代码段: Public class PieChart implements IsWidget { Canvas c; public JavaScriptObject jsChart;

我正在尝试将Chart.js charts()集成到当前的GWT项目中。我让项目识别javaScript,但当我尝试实例化图表时,我的浏览器抛出以下javaScript错误:

无法获取未定义或空引用的属性“insertBefore”

使用以下似乎是问题根源的GWT代码段:

    Public class PieChart implements IsWidget
    {
        Canvas c;
        public JavaScriptObject jsChart;

        public PieChart()
        {
           c = Canvas.createIfSupported();

           if (c.getContext2d().getCanvas().getParentNode() == null)
           {
              //Debug message here
           }

           jsChart = init(c.getContext2d());
        }

        private native JavaScriptObject init(Context2d ctx)
        /*-{
              var data = [];
              return new $wnd.Chart(ctx).Pie(data);  //<-- *Explodes here*
        }-*/;

        @Override
        public Widget asWidget() { return c; }
    }
Public类PieChart实现IsWidget
{
帆布c;
公共JavaScriptObject jsChart;
公共图表()
{
c=Canvas.createIfSupported();
如果(c.getContext2d().getCanvas().getParentNode()==null)
{
//调试消息在这里
}
jsChart=init(c.getContext2d());
}
私有本机JavaScriptObject init(Context2d ctx)
/*-{
var数据=[];
返回新的$wnd.Chart(ctx).Pie(数据);//
私有本机JavaScriptObject init(Context2d ctx)
/*-{
var数据=[];
返回$wnd.Chart(e).Pie(data);//
私有本机JavaScriptObject init(Context2d ctx)
/*-{
var数据=[];

返回$wnd.Chart(e).Pie(数据);//对不起-我在这里找到了这段代码的抄本。e==ctx。我会编辑OP.Re:其他图表首选项-感谢您的选择。我会检查这些选项以确定。我会在实现这些更改后再次回复。根据您的回复,我仔细查看了客户端连接时发生的所有初始化的时间它似乎正是您提到的——在我尝试引用DOM对象之前,DOM对象没有机会正确实例化创建的PieChart对象附加到its面板后的函数。该图表没有显示,但这是另一个问题。至少我的parentNode现在是有效的。:)谢谢!抱歉-在此键入了此代码的副本。e==ctx。我将编辑OP.Re:其他图表首选项-感谢您的选择。我将查看这些选项当然。当我实现了这些更改后,我会再次回复。根据您的回复,我仔细查看了客户端连接到服务器时发生的所有初始化的时间,这似乎正是您所提到的-在我尝试引用DOM对象之前,DOM对象没有机会正确实例化。我的修复方法将创建的PieChart对象附加到its面板后调用init()函数。该图表不会显示,但这是另一个问题。至少我的parentNode现在有效。:)谢谢!
    <!doctype html>
       <html>
          <head>
             <meta http-equiv="content-type" content="text/html; charset=UTF-8">
             <link type="text/css" rel="sytlesheet" href="viewer.css">
             <title>Viewer</title>
             <script type="text/javascript" language="javascript" src="viewer/moment.js"></script>
             <script type="text/javascript" language="javascript" src="viewer/Chart.js"></script>
             <script type="text/javascript" language="javascript" src="viewer/viewer.nocache.js"></script>
          </head>

          <body>
             <noscript>
                   ...
             </noscript>
          </body>
       </html>
    private native JavaScriptObject init(Context2d ctx)
    /*-{
          var data = [];
          return $wnd.Chart(e).Pie(data);  //<-- *Explodes here*
    }-*/;