2015-12-08 55 views
0

有沒有一種可靠的方式來確定在用document.createElement創建並放入something.appendChild後立即確定元素樹的寬度?元素的offsetWidth或getBoundingClientRect在Firefox和IE中可以正常工作,但在Google Chrome中無法正常工作。它僅適用於setTimeout,但不適用於零超時。通常是200毫秒。我讀過一些地方,訪問offsetWidth觸發重排,但它不在谷歌瀏覽器v47。也許它與這個bug有關:https://code.google.com/p/chromium/issues/detail?id=290399確定谷歌瀏覽器中新元素的寬度

回答

0

我從來沒有使用與clientWidth超時:

var div = document.createElement('div'); 
 
var body = document.querySelector('body'); 
 
body.appendChild(div); 
 
var div_width = div.clientWidth; 
 
div.innerHTML = div_width;
<body></body>

0

你能不能元素的寬度存儲在使用jQuery一個variabele?

0

不知道我是否正確理解了您的問題,但在連接到DOM之前無法獲取元素寬度。 也許你想要做這樣的事情:

var test = document.getElementById('test').clientWidth; 
var div = document.createElement('div'); 

document.getElementById('container').appendChild(div).innerHTML = 'new element'; 

http://jsfiddle.net/andreasonny83/5ddtzaf6/

+0

「但在連接到DOM之前,您無法獲取元素寬度。」謝謝你的好處,但我在閱讀房產之前附加了。 –

0

我已經想通了,這是因爲圖像和我通過指定固定尺寸的解決了這個問題。 (這對我的設計來說是不愉快的) IE和Firefox不需要它,可能它們在返回父元素的寬度之前加載圖像。 感謝大家的幫助。