在Chrome中加載以下頁面,但在Firefox/IE中crossfilter.js腳本(crossfilter.js)中發生錯誤「太多的遞歸」。使用交叉過濾器時出現太多遞歸錯誤
這可怎麼避免(或調試)?
編輯
原來,Chrome瀏覽器可以解析日期與破折號( 「2013年6月12日」),但Firefox /即需要空間( 「6月12日2013」)
在Chrome中加載以下頁面,但在Firefox/IE中crossfilter.js腳本(crossfilter.js)中發生錯誤「太多的遞歸」。使用交叉過濾器時出現太多遞歸錯誤
這可怎麼避免(或調試)?
編輯
原來,Chrome瀏覽器可以解析日期與破折號( 「2013年6月12日」),但Firefox /即需要空間( 「6月12日2013」)
有沒有真正的任何方式我可以驗證這是沒有可運行示例的問題,但您的維度中可能有非自然順序的值。您需要投射尺寸值並確保所有值都有效。相關的部分看起來是:
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值,因此如果您仍然收到錯誤,您可能需要嘗試用「新日期()」替換它。
再一次,沒有保證是造成你的問題,但是當我得到這些遞歸錯誤,這通常是原因。
我剛剛遇到同樣的問題,但解決方案不是日期格式,而是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,錯誤消失了。
那麼首先要做的就是嘗試使用該庫的非縮小版本的頁面,以便您可以準確跟蹤失敗發生的位置。 – Pointy
偉大的一點 - 我仍然得到相同的「太多遞歸」錯誤,沒有行號 – mike