Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ExtJS4闪屏app.js返回错误_Javascript_Extjs4_Styles_Undefined_Splash Screen - Fatal编程技术网

Javascript ExtJS4闪屏app.js返回错误

Javascript ExtJS4闪屏app.js返回错误,javascript,extjs4,styles,undefined,splash-screen,Javascript,Extjs4,Styles,Undefined,Splash Screen,我最初有一个长加载应用程序,所以我尝试制作一个启动屏幕。它“几乎”完美地工作。我收到以下错误:uncaughttypeerror:无法读取指向我的app.js中特定行的未定义的的属性“style”。然而,我就是看不出有什么问题。启动屏幕加载良好,并逐渐消失良好(几乎)。我注意到的是,我创建的div似乎仍然在那里,但你看不到它,但它仍然屏蔽了输入的主体。以下是我的app.js: Ext.Loader.setConfig({ 已启用:true }); 荧光屏; Ext.onReady(函数(){ /

我最初有一个长加载应用程序,所以我尝试制作一个启动屏幕。它“几乎”完美地工作。我收到以下错误:
uncaughttypeerror:无法读取指向我的app.js中特定行的未定义的
的属性“style”。然而,我就是看不出有什么问题。启动屏幕加载良好,并逐渐消失良好(几乎)。我注意到的是,我创建的div似乎仍然在那里,但你看不到它,但它仍然屏蔽了输入的主体。以下是我的app.js:

Ext.Loader.setConfig({
已启用:true
});
荧光屏;
Ext.onReady(函数(){
//在主体上启动遮罩并获取对遮罩的引用
splashscreen=Ext.getBody().mask('Dashboard Loading…','splashscreen');
//向该掩码添加一个新类,因为我们希望它看起来与默认值不同。
splashscreen.addCls(“splashscreen”);
//在加载图标前插入一个新的div,我们可以在其中放置徽标。
Ext.DomHelper.insertFirst(Ext.query('.x-mask-msg')[0]{
cls:“x-splash-icon”
});
});
Ext.create('Ext.app.Application'{
控制器:['Main'],
门店:['sales'、'ProdGrid002s'、'ProdGrid008s'、'ProdGrid009s'、'Unitcosts'、'Prepaids',
'Logintakes','WasteTickets','InventoryFinisheds','InventoryRoughs','Shippings'],
名称:“Dash1”,
appFolder:“/html/cgi-dev/millapps/dashboards/Dash1/app”,
启动:函数(){
//设置淡出飞溅屏幕的任务
var apptask=new Ext.util.DelayedTask(函数(){
//褪去防毒面具
闪屏衰减({
期限:2000年,
删除:true
});
//淡出图标和消息
splashscreen.next().淡出({
期限:2000年,
删除:对,
听众:{
afteranimate:函数(){
//在动画之后将主体设置为未遮罩
Ext.getBody().unmask();
}
}
});
});
//启动后运行淡入淡出。
应用任务延迟(1000);
},
自动创建视口:true
});
我的样式表:

.x-mask.splashscreen{
背景色:白色;
不透明度:1;
}
.x-mask-msg.splashscreen,
.x-mask-msg.splashscreen div{
字号:18px;
填充:110px 110px 50px 110px;
边界:无;
背景色:透明;
背景位置:上中;
}
.x-message-box.x-window-body.x-box-inner{
最小高度:200px!重要;
}
.x-splash-icon{
/*由于加载符号CSS选择器,因此需要重要信息*/
背景图片:url('/resources/images/logo.jpg')!重要;
利润上限:-30px;
边缘底部:20px;
}

错误指向代码行Ext.getBody().unmask();它位于afteranimate函数中。我被难住了……

不相关,但代码中有一个竞争条件,这使得错误很难重现。我不得不延迟
Ext.getBody().unmask()
调用来触发它

问题是,由于
remove:true
选项,动画正在破坏unmask方法试图访问的DOM元素。但是,由于Ext在内部跟踪掩码,因此确实需要调用
unmask()
,以避免以后出现不可预知的行为


因此,解决方案只是删除动画配置中的两行
remove:true
,而unmask将负责处理DOM元素本身。

我很高兴能帮助您,也很高兴您花时间发表感谢评论。但如果你碰巧看到这条评论,如果你接受这个答案,这将有助于我成长我的电子阴茎^^