使用Extjs,点击窗口外部关闭弹出窗口

5
我有一个弹出窗口,不是模态的。我该如何在页面的其他部分(而不是窗口内)单击以关闭此窗口?
1个回答

5

类似这样:

function closeWin(e, t) {
    var el = win.getEl();

    if (!(el.dom === t || el.contains(t))) {
        Ext.getBody().un('click', closeWin);
        win.close();
    }
}

Ext.getBody().on('click', closeWin);

太好了!谢谢。请问我该如何取消注册此点击事件? - Anton M.
我注意到这种识别窗口外点击的方法在窗口包含组合框时处理不好,因为组合框的下拉列表似乎没有被渲染为窗口的子级。然后,单击下拉列表以选择项目被解释为窗口外的单击。有什么简单的方法可以在此处将列表识别为窗口的一部分? http://jsfiddle.net/FScHR/4/ - Chris Farmer
更新选项修复:var el = cmp.getEl(); // 修复组合框选项。 如果(!(el.dom === t || el.contains(t) || ('option' === t.getAttribute('role')))){ Ext.getBody().un('click', cmp.closeWin); cmp.close(); } - Kinjeiro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接