javascript-更新对话框而没有立即关闭它?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-更新对话框而没有立即关闭它?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1619字,纯文字阅读大概需要3分钟。
内容图文
![javascript-更新对话框而没有立即关闭它?](/upload/InfoBanner/zyjiaocheng/683/5c4507531dbf498591c3e771054ed862.jpg)
我目前正在尝试通过Javascript打开对话框,并在显示对话框本身之前更新其元素.
触发器来自primefaces推送,因此我尝试通过JavaScript处理所有事件.
基本上流程是这样的:
<p:socket onMessage="onStart" channel="/votingStartChannel" />
套接字触发以下JavaScript:
function onStart(data)
{
votingDialogRefresh();
PF('votingDialogWindow').show();
}
请注意,我的对话框称为votingDialogWindow.
另一个函数votingDialogRefresh();正在触发以下内容:
<h:form>
<p:remoteCommand name="votingDialogRefresh" update="votingDialogWindow" />
</h:form>
在对话框显示之前“应该”更新对话框.
但是,一旦我开始该流程,该对话框就会立即打开和关闭.我看到它像3秒钟.而且,据我所见,在这个很小的时间范围内,没有任何更新,因为所有字段仍未填充期望值.
我在这里做错了什么?
解决方法:
您的技术问题是由于< p:remoteCommand>执行“即发即弃”异步(ajax)请求.基本上,在发送了ajax请求之后,votingDialogRefresh()函数调用将立即返回并前进至PF(‘votingDialogWindow’).show(),该对话框将显示对话框.但是,当< p:remoteCommand>的ajax响应出现时,稍后返回,它将更新整个对话框.显然,对话框的默认状态为“关闭”.因此它将在视觉上立即关闭.默认状态可以通过visible属性控制.如果您使用了visible =“#{facesContext.postback}”,它将显示为已打开,这对于用户体验来说很糟糕,因为最终用户会在对话框打开后不久看到对话框的内容被更新/更改,这很令人困惑.
您应该在ajax请求完成且对话框更新后打开对话框,而不是在触发ajax请求之前或更新对话框之前.您只需将调用移至< p:remoteCommand>的oncomplete即可实现.
function onStart(data) {
votingDialogRefresh();
}
<h:form>
<p:remoteCommand name="votingDialogRefresh" update="votingDialogWindow"
oncomplete="PF('votingDialogWindow').show()" />
</h:form>
内容总结
以上是互联网集市为您收集整理的javascript-更新对话框而没有立即关闭它?全部内容,希望文章能够帮你解决javascript-更新对话框而没有立即关闭它?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。