2012-03-07 69 views
2

我要聽的情況下,只要在文檔(體)大小改變 這會造成任何內部 (但你假設不知道是什麼因素導致了調整大小)不能聽文件resize事件

作爲代碼如下: http://jsfiddle.net/marstone/7zaRT/8/

你可以點擊綠色區域來改變div大小,然後調整document.body大小。但是,onresize事件不會被解僱。

我發現,當調整窗口大小,它才能正常運行,如拖/最大的瀏覽器窗口

什麼解決辦法?任何幫助讚賞。

回答

0

這應該做的伎倆:

$(document).bind('DOMSubtreeModified', function(e) { 
alert("Bazinga!"); 
console.log(e); 
​});​ 

不過請注意,它傾向於過分火,但我會留給你弄清楚如何,這可能適合你的應用程序。

http://jsfiddle.net/pratik136/7zaRT/12/

+1

謝謝!在Chrome和FF中適用於我,但不適用於IE。 – marstone 2012-03-07 04:10:21

+0

IE中的唯一方法是一種粗略的方法:http://stackoverflow.com/q/1218445/476786 你在哪裏經常輪詢你的'DOM'來檢查變化。你可能會破解這個來檢測視口大小的變化。嘗試試用滾動條及其相對位置變化。 哦,如果這個答案有幫助,請把它標記爲接受:) – bPratik 2012-03-07 04:21:58

2

如您所說,調整大小事件僅適用於Windows對象。您可以使用jquery-resize plugin在DOM元素上添加調整大小事件,但建議他們實施輪詢機制以跟蹤元素的大小。因此,您必須始終將事件綁定到您要觀看的元素(由於沒有真正的事件在DOM上冒泡,因此委託不起作用)。

到目前爲止,我已經使用了該插件幾次,沒有任何小故障。我不知道其他插件是否實現了這個相同的機制,但我確定它們都依賴於輪詢機制。

+0

謝謝!但我的項目由於某種原因無法使用jquery。我會自己實現這個機制。我想找一些輕量級解決方案 – marstone 2012-03-07 04:11:03