我正在使用Office-Fabric-Ui及其对话框功能。
var template = $("<div id='something'>This is modal dialog content</div>");
var uidialog = new fabric["Dialog"](template[0]);
现在,uidialog
有_overlay
变量,单击此_overlay
关闭uidialog
,但我们不希望对话框在单击时关闭并尝试删除处理程序_overlay
我尝试了许多解决方案,其中一些解决方案仍然无法从覆盖元素中删除处理程序:
解决方案 1
fabric.Dialog.prototype.RemoveOverlayClick = function () {
this._overlay.overlayElement.removeEventListener("click", this.close.bind(this));
this._overlay.overlayElement.removeEventListener("click", this._overlay.hide.bind(this._overlay));
this._overlay.overlayElement.removeEventListener("click", this.__proto__.close.bind(this.__proto__));
this._overlay.overlayElement.removeEventListener("click", fabric.Dialog.prototype.close.bind(fabric.Dialog.prototype));
}
uidialog.RemoveOverlayClick();
解决方案 2
uidialog._overlay.overlayElement.removeEventListener("click", uidialog.__proto__.close.bind(this.__proto__));
uidialog._overlay.overlayElement.removeEventListener("click", fabric.Dialog.prototype.close.bind(fabric.Dialog.prototype));
有人可以建议如何删除点击事件处理程序fabric.Overlay
吗?