2014-03-19 42 views
0

我在Safari以下错误:Safari的犯规显示nvd3图表

TypeError: 'NaN' is not a valid argument for 'in' (evaluating 'n in t') 

这是一个似乎是有原因的代码段(从safati开发工具):

function nn(e) { 
    return function(t, n) { 
    return t += e, [t > Fa ? t-2 * Fa: - Fa > t ? t + 2 * Fa: t, n] 
    } 
} 

Src:nvd3.min.js.

图表在任何其他浏览器(甚至IE)中都能正常工作。图表类型,我们正在使用PIE,LINE BAR,BULLET。

UPDATE

我用nvd3现在开发版本在这里:https://raw.github.com/novus/nvd3/master/nv.d3.min.js

我在Safari中启动我的流星项目并得到未处理(相同)异常。 d3.v3.js,第4748行()。

function d3_interpolateObject(a, b) { 
var i = {}, c = {}, k; 
for (k in a) { 
    if (k in b) { 
    i[k] = d3_interpolateByName(k)(a[k], b[k]); 
    } else { 
    c[k] = a[k]; 
    } 
} 
for (k in b) { 
    if (!(k in a)) { 
    c[k] = b[k]; 
    } 
} 
return function(t) { 
    for (k in i) c[k] = i[k](t); 
    return c; 
}; 

}

我还发现我的代码片段调用D3的是 '车' 的一部分:

try { 
    d3.select('#chart3 svg') 
    .datum(data) 
    .transition().duration(1000) 
    .call(chart); 
} 
catch (e) { 
    console.log(e.message); 
} 

这是一个 '子弹' 图。与线条图一样的问题。 数据看起来如下:

 var data = { 
      "title": "test", 
      "subtitle": "test", 
      "ranges": [1, 2, 3], 
      "measures": [x], 
      "markers": [x], 
      "rangeLabels": ['test', 'test', 'test'], 
      "measureLabels": ['test'], 
      "markerLabels": ['test'] 
     }; 

其中x是浮点数。

+1

我没有在这里看到'n in t'表达式。我也不能在nvd3.min.js中找到这个表达式我怀疑这是你正在使用的代码优化器将转换成缩小的代码的东西。你可以使用未缩小版本的nvd3吗?否则,这听起来像是一个在nvd3中的错误。 –

+0

确保您使用的是最新版本的NVD3。 [NVD3在基于WebKit的浏览器上运行效果最好](https://github.com/novus/nvd3#supported-browsers).Google Chrome:最新版本(首选)','Opera 15+(首选)','Safari:最新版本“,”Firefox:最新版本“和”Internet Explorer:9和10“ – shabeer90

回答

0

问题出在内部d3数据解析与safari特定。

所以我解决了更改图表类型为简单的问题的问题。