2015-06-18 27 views
3

我需要轉換爲JSON值的結果通過Element.getBoundingClientRect()不能隱蔽,以JSON值Element.getBoundingClientRect()

下面的例子返回DOMRect對象的結果:

http://jsfiddle.net/5vs6x6fc/2/

當使用JSON.stringify()它返回{},我需要的是JSON值。

我想知道:

  • 這是爲什麼?
  • 這可能是一個可行的解決方案替代循環返回的對象r前的財產:for (var property in r){}

注:我定位於Chrome。

+2

搶在這個問題https://bugzilla.mozilla.org/show_bug.cgi?id=1100611 –

+0

事件屬性是相同的方式,並沒有簡單的單線程afaik。 – dandavis

+1

因此,帶走似乎是「不起作用」,因爲對象不擁有屬性。 –

回答

3

邊界矩形只包含「虛擬」屬性。如果你

console.log(Object.getOwnPropertyNames(r)); 
// or 
console.log(Object.keys(r)); 

你會得到一個空的列表。 JSON.stringify()取決於Object.keys(r)(請參閱下面的註釋),因此返回空對象文字。

您的基於環路的方法似乎是解決此問題的可行方案。

+0

'JSON.stringify()'技術上使用與單純的'Object.keys()'列表相同的名稱... – dandavis

+0

噢好吧,不知道。但結果是一樣的。 –

+0

是的,如果它不是在gopn中,它也不是鍵。 darn dom對象... – dandavis