if (this.hasAttribute("onclose")) { var f = new Function(this.getAttribute("onclose")); f.call(this); } this.parentNode.parentNode.removeChild(this.parentNode); this._closed = true; // emit DOMModalDialogClosed event let event = document.createEvent("Events"); event.initEvent("DOMModalDialogClosed", true, false); let dispatcher = this.parent || getBrowser(); dispatcher.dispatchEvent(event); let thread = Components.classes["@mozilla.org/thread-manager;1"] .getService(Components.interfaces.nsIThreadManager) .currentThread; while (!this._closed) thread.processNextEvent(true);