最近发现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);
};