EON图表在页面加载时不可见

时间:2016-09-23 11:26:10

标签: javascript html pubnub

我有一个工作的EON图表,在初始页面加载时没有显示,导致出现空白页面。如果我切换到另一个浏览器选项卡,然后直接返回到图表选项卡,则会显示图表。

这是HTML / JavaScript和CSS。

感谢您的帮助。

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<script type="text/javascript" src="http://pubnub.github.io/eon/v/eon/0.0.10/eon.js"></script>
<link type="text/css" rel="stylesheet" href="http://pubnub.github.io/eon/v/eon/0.0.10/eon.css"/>

<link rel="stylesheet" type="text/css" href="poolstyle.css">

<head>          
</head>

<body>
<script type="text/javascript">

    var pubnub = PUBNUB.init ({publish_key: 'xxx',
               subscribe_key: 'xxx',
               error: function (error) {console.log('Error:', error)}});

    var GraphChannel = "xxx";
    var h = true;

    charttemp = eon.chart({

            pubnub: pubnub,
            channel: GraphChannel,
            limit: 1440,
            history: h,
            flow: true,
            generate: {
                        bindto: "#charttemp",
                        data: { colors : {}, type: "spline"},
                        transition: {duration: 250},
                        axis: { x: {label: "Time", show: false}},
                        grid: { x: {show: false}, y: {show: true}},
                    },
            transform: function (m) 
                    {
                        return {eon: { 'Temperature' : m.tN}}
                    }
            }); 



</script>           

    </br>
    <div class="outer">
        <div id="charttemp" class="inner"> </div> 
        <div id="charthumidity"  class="inner"> </div>
        <div id="chartlight"  class="inner"> </div> 
    </div>

</body>

</html>

这是CSS:

.outer {
  margin: 0 auto;
  width:1500px;
}

.inner{
  display: table;
  float: left;
  width: 30%;
}

1 个答案:

答案 0 :(得分:0)

在这里发生一些事情:

  • 将您的图书馆参考移至<head>标记
  • 但真正的问题是:您的EON代码引用#charttemp但它尚未呈现,因为<div>低于EON脚本,这就是为什么它需要选项卡失去焦点/获得焦点第一次渲染。所以只需将您的<div>移到您的EON脚本之上。
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>  
    <script type="text/javascript" src="http://pubnub.github.io/eon/v/eon/0.0.10/eon.js"></script>
    <link type="text/css" rel="stylesheet" href="http://pubnub.github.io/eon/v/eon/0.0.10/eon.css"/>
    <!-- <link rel="stylesheet" type="text/css" href="poolstyle.css"> -->
</head>

<body>
<div class="outer">
    <div id="charttemp" class="inner"> </div> 
    <div id="charthumidity"  class="inner"> </div>
    <div id="chartlight"  class="inner"> </div> 
</div>

    <script type="text/javascript">
        var pubnub = PUBNUB.init ({
            publish_key: 'pubkey', subscribe_key: 'subkey',
            error: function (error) {console.log('Error: ', error)}});

        var GraphChannel = "a";
        var h = true;

        charttemp = eon.chart({
            pubnub: pubnub,
            channel: GraphChannel,
            limit: 1440,
            history: h,
            flow: true,
            generate: {
                bindto: "#charttemp",
                data: { colors : {}, type: "spline"},
                transition: {duration: 250},
                axis: { x: {label: "Time", show: false}},
                grid: { x: {show: false}, y: {show: true}},
            },
            transform: function (m) 
            {
                return {eon: { 'Temperature' : m.tN}}
            }
        });
    </script>           
</br>
</body>
</html>