Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.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
Java 当我选择留在页面上时,window.onbeforeunload不起作用_Java_Javascript_Jquery_Jsf_Primefaces - Fatal编程技术网

Java 当我选择留在页面上时,window.onbeforeunload不起作用

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;

我有一个用于文件上传的xhtml页面:

<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>