最近發現BlockUI開啟iframe子畫面,在子畫面執行一些操作再unblockUI, 主畫面會暫時無法使用,Google的結果發現是IE下unblockUI會有問題。
最近發現BlockUI開啟iframe子畫面,在子畫面執行一些操作再unblockUI, 主畫面會暫時無法使用,Google的結果發現是IE下unblockUI會有問題。
後來發現unblockUI在移除遮罩時,執行reset方法會迴圈移除物件,此時會造成IE有Memory Leak的問題,須改用discardElement取代remove,就不會造成IE在移除物件延遲的問題,請參考:http://kossovsky.net/index.php/2009/07/ie-memory-leak-jquery-garbage-collector/。
// move blocking element back into the DOM where it started
function reset(els,data,opts,el) {
els.each(function(i,o) {
// remove via DOM calls so we don't lose event handlers
if (this.parentNode){
//this.parentNode.removeChild(this);
jQuery.discardElement(this); //Prevent IE Memory Leak
}
});
if (data && data.el) {
data.el.style.display = data.display;
data.el.style.position = data.position;
if (data.parent)
data.parent.appendChild(data.el);
$(el).removeData('blockUI.history');
}
if (typeof opts.onUnblock == 'function')
opts.onUnblock(el,opts);
};