选项卡中的Dojo图表在Firefox中不起作用

92dk7w1h  于 2022-12-16  发布在  Dojo
关注(0)|答案(1)|浏览(167)

我在两个选项卡中使用两个相同的脚本,以便在每个选项卡中创建一个Dojo图表:tabs page .
如果您使用Google ChromeSafari打开页面,则两个选项卡都会呈现图表。
如果您用Firefox打开它,第二个选项卡不会呈现它的图表。如果您用Explorer 11打开它,第二个选项卡会以随机大小呈现它的图表。
有人能告诉我为什么我在第二个选项卡中得到这个错误吗?
我所有的浏览器都更新到最新版本了。
该脚本使用最新版本的dojo jquery:

<!DOCTYPE html>
<html>
<head>

  <link rel="stylesheet" href="https://js.arcgis.com/3.20/esri/themes/calcite/dijit/calcite.css">
  <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  <script src="https://ajax.googleapis.com/ajax/libs/dojo/1.13.0/dojo/dojo.js"></script>

  <script>
    require([
             "dojox/charting/Chart",
             "dojox/charting/Chart2D", 
             "dojox/charting/action2d/MoveSlice" , 
             "dojox/charting/action2d/Tooltip",
             "dojo/ready"], 
            function(Chart, Chart2D, MoveSlice, Tooltip, ready){

ready(function(){

var chart1 = new Chart("He1");

                chart1.addPlot("default", {
                    type: "Pie"
                });
                chart1.addSeries("He1", [
                    {y: 1, text: 1},
                    {y: 1, text: 2}

                ]);
                new Tooltip(chart1, "default");
                new MoveSlice(chart1, "default");

chart1.render();

});

    });

    </script>

</head>
<body class="calcite">
<div>
    <div id="He1" style="width: 140px; height: 140px; "></div>
</div>

</body>
</html>
ux6nzvsh

ux6nzvsh1#

若要在可折叠中创建多个图表,请创建适当的布局,然后初始化图表和 Package 它们的可折叠容器。
例如,您可以修改布局以

<body class="calcite">
  <div id="accordion" style="height: 280px">
    <div id="pane1">
      <div id="He1" style="width: 140px; height: 140px; "></div>
    </div>
    <div id="pane2">
      <div id="He2" style="width: 140px; height: 140px; "></div>
    </div>
  </div>
</body>

然后像以前一样创建He1He2图表,最后初始化accordion和面板,如下所示:

var acc = new AccordionContainer({}, "accordion");
acc.addChild(new ContentPane({
  title: "Chart one",
}, "pane1"));
acc.addChild(new ContentPane({
  title: "Chart two",
}, "pane2"));
acc.startup();

参见此处的工作示例:https://jsfiddle.net/1k6w8otn/4
注意,它不需要任何iframe。我强烈主张使用任何构建器进行纯编程(正如你在评论中提到的)通常会导致意大利面代码,很多时候你会让自己无法修复它。Dojo工具包也远非最佳选择,它是目前的利基库(没有最新的书籍,几乎没有社区背后等),如果你不是被迫使用它,做一些研究,并寻找更好的JS库。

相关问题