Java 当我选择留在页面上时,window.onbeforeunload不起作用
我有一个用于文件上传的xhtml页面:Java 当我选择留在页面上时,window.onbeforeunload不起作用,java,javascript,jquery,jsf,primefaces,Java,Javascript,Jquery,Jsf,Primefaces,我有一个用于文件上传的xhtml页面: <p:fileUpload fileUploadListener="#{ContentRepositoryExplorerBean.upload}" update="formId" dragDropSupport="true" multiple="true"/> 我需要为用户创建确认对话框,例如,当用户按“注销”时 我所做的是: <script> var flag = false;
<p:fileUpload fileUploadListener="#{ContentRepositoryExplorerBean.upload}"
update="formId" dragDropSupport="true" multiple="true"/>
我需要为用户创建确认对话框,例如,当用户按“注销”时
我所做的是:
<script>
var flag = false;
function setFlag(v) {
flag = v;
}
function getWarningMessage() {
if(flag == true) {
window.onbeforeunload = function() {
return 'Please do not leave this page until upload is done';
}
}
}
$('#logout').click(function() {
getWarningMessage();
});
</script>
var标志=假;
函数设置标志(v){
flag=v;
}
函数getWarningMessage(){
如果(标志==真){
window.onbeforeunload=函数(){
返回“上传完成前请不要离开此页面”;
}
}
}
$(“#注销”)。单击(函数(){
getWarningMessage();
});
并添加到文件上载onstart和oncomplete
<p:fileUpload fileUploadListener="#{ContentRepositoryExplorerBean.upload}"
update="formId" dragDropSupport="true" multiple="true"
onstart="setFlag(true)" oncomplete="setFlag(false)"/>
但是当我选择留在页面上时,我的上传并没有显示在列表中应该显示的位置。您可以在上传过程中显示任何想法 创建对话框(在主窗体之外):
将p:fileUpload更改为
<p:fileUpload fileUploadListener="#{ContentRepositoryExplorerBean.upload}"
update="formId" dragDropSupport="true" multiple="true"
onstart="PF('statusDialog').show();"
oncomplete="PF('statusDialog').hide();"/>
现在,如果用户上传,它将显示一个带有文本消息的弹出窗口 通过稍微更改脚本修复了此问题:
<script type="text/javascript" >
var flag = false;
function setFlag(v) {
flag = v;
}
$(document).ready(function() {
var onclickFunc = new Function($('#logout').attr('onclick'));
$('#logout').on("click", function(event){
if(flag == true) {
event.stopImmediatePropagation();
alert("Please do not leave this page until upload is done");
}
}).click(onclickFunc).removeAttr('onclick');
})
</script>
var标志=假;
函数设置标志(v){
flag=v;
}
$(文档).ready(函数(){
var onclickFunc=新函数($('#logout').attr('onclick');
$(“#注销”)。在(“单击”上,函数(事件){
如果(标志==真){
事件。stopImmediatePropagation();
警告(“上传完成前请不要离开此页面”);
}
}).单击(onclickFunc).removeAttr('onclick');
})
您所说的“上传未显示在列表中它应该显示的位置”是什么意思?我有一个正在显示的文件列表。在我上传一个文件后,它应该出现在列表中谢谢。但这并不安静,我期待着成功。文件上传时,我需要有可能冲浪,并显示确认对话框,只有当用户试图注销或关闭浏览器,或关闭标签。祝您好运与您的要求。你在哪里见过这样的东西?我的顾客很想知道
<script type="text/javascript" >
var flag = false;
function setFlag(v) {
flag = v;
}
$(document).ready(function() {
var onclickFunc = new Function($('#logout').attr('onclick'));
$('#logout').on("click", function(event){
if(flag == true) {
event.stopImmediatePropagation();
alert("Please do not leave this page until upload is done");
}
}).click(onclickFunc).removeAttr('onclick');
})
</script>