ExtJS Window setActive() 无法按预期工作
ExtJS Window setActive() not working as expected
TL/DR:
调用 window.setActive(false)
不会将窗口的 active
属性设置为 false
。
完整详情:
我有以下 ExtJS 类继承自Ext.window.Window
:
Ext.define('WD.view.TbWindow', {
extend : 'Ext.window.Window',
isTbWindow: true,
title: 'Set Me!!',
constrain: true, // constrain window to viewport
autoShow: false,
maximizable: true,
minimizable: true,
renderTo: 'main_panel-body',
minimize: function() {
this.hide();
this.setActive(false);
this.animateTarget.handleWinMinimize();
},
...
});
在上面的函数minimize
中,有调用this.setActive(false);
我使用 Chrome 开发者工具来调试代码。在执行行之前this.active
true
。行执行后,它仍然true
。我正在使用 ExtJS 4.1。
源代码中没有将活动属性设置为 true 或 false,文档中也没有提及。
setActive: function(active, newActive) {
var me = this;
if (active) {
if (me.el.shadow && !me.maximized) {
me.el.enableShadow(true);
}
if (me.modal && !me.preventFocusOnActivate) {
me.focus(false, true);
}
me.fireEvent('activate', me);
} else {
// Only the *Windows* in a zIndex stack share a shadow. All other types of floaters
// can keep their shadows all the time
if (me.isWindow && (newActive && newActive.isWindow)) {
me.el.disableShadow();
}
me.fireEvent('deactivate', me);
}
}
问题出在Ext.WindowManager.getActive()
方法上。事实上,在Web桌面示例中,Sencha的家伙实际上做了一些不太好的编码来获得实际的活动窗口。我复制了该代码,并开始在我的代码中支持 Windows 数组,这解决了我的问题。
我已经编写了一个(并在其中构建了额外的功能)一个继承自Ext.util.MixedCollection
的DesktopMgr
小部件,并充当"桌面管理器",其中"桌面"意味着任何旨在处理多个窗口、激活、停用、导航到上一个/下一个等的 ExtJS 容器。
您可以从此要点下载并使用DesktopMgr
。如果您找到改进它的方法(或要修复的错误!
相关文章:
- window.onload没有'无法在Android WebView中工作
- window.onpopstate不工作;当我导航回页面时,不会发生任何事情
- Windows.Open 在 window.Location 工作时不起作用
- javascript window.open将无法在Chrome控制台上工作
- window.open尽管被用户触发,但仍无法在InternetExplorer中工作
- window.location.htm无法在chrome扩展中工作
- window.open没有't在设置setTimeout内工作-弹出窗口被阻止
- setInterval 或 window.location 在 Opera、IE 和 Safari 中无法正常工作
- window.onbeforeunload在IE8中不触发(在Firefox,Chrome和Safari中工作正常)
- 使用window.open后,window.close无法在firefox中工作
- window.open无法在显示pdf的jsp页面中工作
- window.open在firefox上工作,而不是在chrome上
- window.位置工作不正常
- window.open()没有'无法在添加到主屏幕的移动Safari web应用程序中工作
- window.open获胜'无法在Phonegap 1.7.0中工作
- window.location在IE9和FF中的工作方式不同
- window.location重定向没有'我不在IE8上工作
- window.history.go(-1)无法在Chrome中工作
- Window.open不工作,布尔值不是函数
- 轨道4和gon-不工作?window.gon={};