wafBlock阻塞控件和AJAX同步请求一起使用遮罩层不显示的问题
一、问题场景
使用waf.doPost请求设置async:false后不出现遮罩层,自己加上waf.block.show()方法也不出现遮罩层。但是如果把async设置为true后可以弹出遮罩层。
二、问题分析
对于async:true也就是异步请求,框架自带的doPost会自己加上遮罩层。(可以通过配置showBlock属性为取消)
对于async:false同步请求,因为GUI渲染线程与JS引擎线程是互斥的,所以此时渲染线程被阻塞导致遮罩的样式没有被加载出来。而直接设置ajax请求为异步的时候,浏览器会新开一个线程来执行,当然回调的时候还是js的单线程性。只是此时GUI渲染线程不会被阻塞。
三、解决方式
还是用ajax的异步请求。将之前的ajax后代码逻辑统一放到ajax的sucess回调函数中,或者使用deferred对象
自己创建一个遮罩层的dom默认隐藏,当调用jquery的show方法显示出来时,使用回调函数处理。
$("#mask").show(function(){ //显示遮罩层,在回调中执行ajax $.ajax({ url:"xxxx", async:false, //同步 success:function(res){ $("#mask").hide(); //隐藏遮罩层 } }) });
wafBlock阻塞控件和AJAX同步请求一起使用遮罩层不显示的问题
一、问题场景 使用waf.doPost请求设置async:false后不出现遮罩层,自己加上waf.block.show()方法也不出现遮罩层。但是如果把async设置为...
点击下载文档
本文2024-09-22 20:02:06发表“eas cloud知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-eas-111027.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章