Flot:尝试在页面加载时绘制图形时会弹出奇怪的错误?

Lou*_*s93 2 javascript jquery flot

图形没有绘制,控制台抛出这个:Uncaught Error: Invalid dimensions for plot, width = 1350, height = 0是错误.

我尝试在JSFiddle上重新创建错误但是无法这样做,但是它应该类似于:JSFiddle

关于此错误的一些注意事项

  • 有时在第一个x页面加载时,将绘制图形,然后在抛出该错误后它将停止.

  • 这是完整的错误:

    Uncaught Error: Invalid dimensions for plot, width = 1350, height = 0 jquery.flot.js:119

    Canvas.resize jquery.flot.js:119

    Canvas jquery.flot.js:98

    setupCanvases jquery.flot.js:1261

    Plot jquery.flot.js:674

    $.plot jquery.flot.js:3039

    visc_graph active-scripts.js:45

    (anonymous function) active-scripts.js:346

    k jquery.min.js:2

    l.fireWith jquery.min.js:2

    p.extend.ready jquery.min.js:2

    D jquery.min.js:2

它似乎从jquery.flot源中抛出:

    Canvas.prototype.resize = function(width, height) {

        if (width <= 0 || height <= 0) {
            throw new Error("Invalid dimensions for plot, width = " + width + ", height = " + height);
Uncaught Error: Invalid dimensions for plot, width = 1350, height = 0
        }
Run Code Online (Sandbox Code Playgroud)
  • 编辑:更多信息:与上面链接的JSFiddle不同,我正在使用该函数绘制多个图形 - 类似这样,但是,当我为每个placeholderdiv 创建单独的函数时,这没有发生.

  • 从控制台调用图形功能,visc_graph(2,3,'#placeholder');似乎工作正常:(

我一直在努力解决这个问题,因为我无法诊断出这个问题的真正原因.关于如何解决这个问题的任何意见都将得到极大的赞赏.

更新:

DNS*_*DNS 5

当Flot无法确定占位符div的大小时,会出现该错误.这可以通过多种方式实现,但通常意味着您$.plot在占位符位于DOM之前调用.

正如@Mark建议的那样,如果您在$.plot文档准备好之前调用,这可能会发生,但也可能以其他方式发生.您的图表是否保留在标签,手风琴,对话框或其他内容在页面加载时隐藏的小部件中?如果是这样,那可能是通过将内容div从DOM中删除来实现的,这意味着绘图占位符也在DOM之外并且无法测量.

这个错误真的没有其他原因,所以如果你仍然没有看到问题,你需要发布更多的代码 - 特别是DOM部分 - 所以我们可以理解发生了什么.