2014-03-12 80 views
2

在Chrome中加載以下頁面,但在Firefox/IE中crossfilter.js腳本(crossfilter.js)中發生錯誤「太多的遞歸」。使用交叉過濾器時出現太多遞歸錯誤

鏈接:http://bit.ly/1epx0Gs

這可怎麼避免(或調試)?

編輯

原來,Chrome瀏覽器可以解析日期與破折號( 「2013年6月12日」),但Firefox /即需要空間( 「6月12日2013」​​)

+0

那麼首先要做的就是嘗試使用該庫的非縮小版本的頁面,以便您可以準確跟蹤失敗發生的位置。 – Pointy

+0

偉大的一點 - 我仍然得到相同的「太多遞歸」錯誤,沒有行號 – mike

回答

3

有沒有真正的任何方式我可以驗證這是沒有可運行示例的問題,但您的維度中可能有非自然順序的值。您需要投射尺寸值並確保所有值都有效。相關的部分看起來是:

self.data.push({ 
      index:index, 
      starttime:new Date(d.starttime), 
      sex:d.gender == '' ? 'Non-Subscriber' : d.gender, 
      value:d.count 
     }) 

我想至少將其更改爲:

self.data.push({ 
       index:+index, 
       starttime:new Date(d.starttime), 
       sex:d.gender == '' ? 'Non-Subscriber' : '' + d.gender, 
       value:+d.count 
      }) 

日期()仍然可以被絆倒您,如果您有無效d.starttime值,因此如果您仍然收到錯誤,您可能需要嘗試用「新日期()」替換它。

再一次,沒有保證是造成你的問題,但是當我得到這些遞歸錯誤,這通常是原因。

0

我剛剛遇到同樣的問題,但解決方案不是日期格式,而是JS文件本身的編碼。也許這會幫助別人。

我用以下維度做一些過濾:

CF_data = crossfilter(data); 
CF_data_id = CF_data.dimension(function(d) { return +d.properties['Código']; }); 

通知西班牙「O」字在return語句的選擇。

而下面的錯誤被拋出:

# too much recursion crossfilter.js:174:9 

檢查一切之後,我發現我的文件是在ANSI編碼的突然而不是UTF8。所以在記事本++中,我將文件轉換回UTF8,錯誤消失了。

相關問題