我有一个在浏览器窗口中播放视频的应用程序。如果视频类型在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函数后也会出现这种情况;
背景中的白色窗口是我想要关闭的窗口。
<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>
答案 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