在我正在处理的Web应用程序中,我们有一些长期运行的进程负责获取office文档。我们基本上用window.open打开一个弹出窗口,它负责轮询服务器以报告进程状态并等待文档的可用性,并在它准备好时重定向到生成的文档(window.location = THE_URL_OF_THE_FILE)。 / p>
当重定向发生时,根据用户配置(请参阅Microsoft知识库),MS Office文档可以直接在Internet Explorer中打开/嵌入,也可以在新的办公套件中打开文件。
在后一种情况下,文档在Excel中成功打开,但导致其打开的窗口永远保留在那里。
有没有办法在Excel成功加载文件后强制关闭该窗口?
我希望这与IE和Windows之间的集成工作方式有某种关系......
修改
$.ajax({
async: false,
type: 'Post',
dataType: 'json',
url: '/Controller/Action/' + docId,
data: $('form').serialize(),
success: function (url) {
window.open(url, 'ShowFile', 'top=25,left=50,width=680,height=400,help=1,status=1,scrollbars=1,toolbars=1,menubar=1,resizable=1',false);
}
});
她的文档在一个新的单词实例中打开,并且在打开文档后,该窗口仍保持打开状态..但是当在新的Ms office实例中打开文件时,该窗口应该关闭。 Url是指向文档的服务器上的位置。
答案 0 :(得分:1)
这是不可能的。出于多种原因:
window
的位置后,您无法执行任何代码 - 您已完成我建议你重新考虑一下你的网站逻辑。
我建议执行一些AJAX而不是打开一个新窗口,并使用它来检查文档的状态,当它准备就绪时,在新窗口中打开它。
如果您确实需要打开一个新窗口,我建议您更改父窗口的document.location
(您用来打开弹出窗口的窗口) 。之后关闭弹出窗口。这不会将页面重定向到新位置,而是按照您的描述打开文档(但是根据用户的设置无法保证该行为)。
答案 1 :(得分:-1)
以下是使用Javascript打开/关闭窗口的代码段(来源:http://www.w3schools.com/jsref/met_win_close.asp)。您可以根据需要修改它:
<html>
<head>
<script>
function openWin()
{
myWindow=window.open("","","width=200,height=100");
myWindow.document.write("<p>This is 'myWindow'</p>");
}
function closeWin()
{
myWindow.close();
}
</script>
</head>
<body>
<input type="button" value="Open 'myWindow'" onclick="openWin()">
<input type="button" value="Close 'myWindow'" onclick="closeWin()">
</body>
</html>
您可以使用jQuery并在window.open上实现一些回调。此外,如果通过javascript从另一个窗口打开窗口,则有一个父属性;它可以用来在两个窗口之间进行通信。