表单请求提交后关闭弹出窗口

时间:2018-02-19 10:02:18

标签: javascript html5 google-chrome

我有一个在浏览器窗口中播放视频的应用程序。如果视频类型在html5中不兼容,那么选项是使用按钮下载,因为在这种情况下我无法让Chrome视频控件保留在页面上。单击按钮后,视频将下载并在媒体播放器中播放。当发生这种情况时,我需要能够关闭原始弹出窗口。

   function playScreen(){
        var playScreenForm = document.getElementById('playScreenForm');
        playScreenForm.action="/playback/exportVideo.action?type=video";
        document.getElementById('videoID').value = getSelectedVideoID();
        document.getElementById('custID').value = getSelectedCustID();
        playScreenForm.submit();
        window.close()
   }

如果我这样做,窗户确实关闭但太早,并且不会发生播放。我遇到的另一个问题是,一旦窗口打开并且用户可能最小化窗口或聚焦于另一个窗口,如果用户点击播放另一个视频&不会出现焦点。以下不起作用,除了模糊功能,它会在用户点击外面的那一刻关闭窗口,但这并不理想。我刚刚列出了我在下面尝试过的功能。

   window.addEventListener('blur', function(){
        console.log('blur');
        window.focus();
        window.close();
    }, false);

    window.addEventListener('minimize',function(){
        window.focus();
        window.close();
    }, false);


    window.addEventListener('focus', function(){
        console.log('focus');
        window.focus();
    }, false);

有任何想法或建议吗?

即使在添加setTimeout函数后也会出现这种情况;

pop up

背景中的白色窗口是我想要关闭的窗口。

 <button class=button id="buttonLink" type="button" style="display:none; 
    position:absolute;margin-left:80%; width:120px;bottom:7px;" 
    onclick="playScreen()">Download</button> 
 <form METHOD="POST" id="playScreenForm" >
    <input id="formID" name="formID" type="hidden" value="playScreenForm"/>
    <input id="callID" name="ID" type="hidden"/>
    <input id="recID" name="CustID_Type" type="hidden"/>
  </form>

2 个答案:

答案 0 :(得分:1)

你已经说过两个问题,让我们只关注第一个问题。你可以问第二个问题。第一个问题是你的window关闭得太早,所以它有效,但你对UX不满意。您需要推迟关闭window以使其在播放后发生。假设你有一个名为playback的变量,它保存了你想要在窗口关闭之前等待的秒数,你可以这样:

   function playScreen(){
        var playScreenForm = document.getElementById('playScreenForm');
        playScreenForm.action="/playback/exportVideo.action?type=video";
        document.getElementById('videoID').value = getSelectedVideoID();
        document.getElementById('custID').value = getSelectedCustID();
        playScreenForm.submit();
        setTimeout(function() {
            window.close();
        }, playback);
   }

如果你有一个在播放结束时运行的功能,你可以在那里处理关闭窗口。

答案 1 :(得分:1)

解决您的第一个问题:setTimeout(function(){ window.close(); },5000);

使用javascript超时功能并设置所需时间

示例:5000 = 5秒 demo for opening a window and closing it after 5 seconds delay