javascript - 当包含在基于 jQuery 的选项卡中时,Google Chart 加载量非常小

标签 javascript jquery charts tabs google-visualization

我正在使用 Google 的 line chart几乎与演示完全一样 - 只有数据发生了变化 - 在 this jQuery tab plugin 内部没有修改。也许有 50% 的时间,图表将以 400x200 加载,即使它已被指定为以 700x250 加载。包含的 div 将具有适当的宽度和高度,但 API 呈现的图表将以 400x200 加载到其中。

我怀疑这是因为当 API 尝试呈现时未显示选项卡。正因为如此,它会尝试以它认为是 null 的内容进行渲染,从而迫使自己采用最小的默认分辨率。

我的想法是,如果图表的显示可以延迟到单击适当的选项卡时,就可以解决问题。可悲的是,我不知道该怎么做,我的研究也没有成果。我能找到的最接近的是 this thread ,但我没有在那里找到任何真正的答案。

如果您有任何建议,我将不胜感激,如有必要,我很乐意跟进更多信息。

最佳答案

在隐藏的 div 中呈现图表(这是选项卡 UI 中未选择的选项卡最有可能的)会扰乱 Visualization API 检测维度的能力,因此您需要执行以下两种操作之一:要么呈现所有图表在实例化选项卡之前,或者(正如您所了解的那样)绑定(bind)事件监听器以在首次打开选项卡时绘制图表。在图表的选项中设置高度和宽度不足以解决所有浏览器中的问题。

我浏览了 easytabs 文档,看起来你应该能够做这样的事情:

// draw chart(s) in your default open tab

// track which tabs you've drawn charts in
var chartsDrawn = {
    tab1: true,
    tab2: false,
    tab3: false
    // etc
};

$('#tab-container').bind('easytabs:after', function (e) {
    if (e.tab == 'tab-2' && !chartsDrawn.tab2) {
        // draw chart(s) in tab 2
        chartsDrawn.tab2 = true;
    }
    else if (e.tab == 'tab-3' && !chartsDrawn.tab3) {
        // draw chart(s) in tab 3
        chartsDrawn.tab3 = true;
    }
    // etc
});

关于javascript - 当包含在基于 jQuery 的选项卡中时,Google Chart 加载量非常小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18564410/

相关文章:

javascript - 0 使用JavaScript在日期字符串中填充日和月

javascript - 遍历所有图像并更改大小?

javascript - Jquery Knockout : ko. Computed() 与经典函数?

python - 带有悬停事件的网络图表

c# - 跨多个折线图的垂直线,并在 Winforms 中显示每个图表的值

javascript - 如何在mootools中同时执行多个动画?

javascript - Origin 没有使用地理定位服务的权限——即使是通过 HTTPS

javascript - 在 DataTables 中显示 "All"页面以及响应表和其他属性

javascript - 我怎样才能让我网站上的这个按钮重定向到网站上的另一个页面?

python - 使用什么代替 bokeh.charts