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

标签 javascript office-ui-fabric office-fabric

我正在使用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/

相关文章:

office-ui-fabric - @fluent-ui/react vs @fluent-ui/react-northstar

reactjs - 如何在 Office UI Fabric React 图标按钮组件中使用 Font Awesome 图标?

office-ui-fabric - 我可以为 TextField 的图标指定一个单独的 onClick 处理程序吗?

c# - 使用 Office UI Fabric(没有反应和角度?)

javascript - 如何使用 React 和 Office Fabric 在详细信息列表中聚焦按钮

javascript - Backbone 路由器参数不工作

javascript - 如何停止提交表单?

office-fabric - @fluentui/react DetailsList 始终显示列标题

javascript - 如何结合 scrapy 和 htmlunit 使用 javascript 抓取 url

javascript - 如何使用 Vue.JS 3 组合 API 对数组中的多个不同对象求和?