gpt4 book ai didi

javascript - 从结构对话框覆盖层中删除单击处理程序

转载 作者:太空宇宙 更新时间:2023-11-04 15:39:54 25 4
gpt4 key购买 nike

我正在使用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 上的点击事件处理程序吗?

最佳答案

我在removeEventHandler中没有成功点击,但我使用了cloneNode这样对话框就不会在单击叠加层时关闭。

var _dialogOverlay = uidialog._overlay.overlayElement.cloneNode();
document.body.appendChild(_dialogOverlay);
uidialog._overlay.overlayElement.style.display = 'none';

关于javascript - 从结构对话框覆盖层中删除单击处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43977729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com