重定向到自动打开的MS office(word,excel,powerpoint)文档后,如何关闭浏览器窗口?

时间:2013-05-09 12:56:29

标签: javascript internet-explorer javascript-events

在我正在处理的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是指向文档的服务器上的位置。

2 个答案:

答案 0 :(得分:1)

这是不可能的。出于多种原因:

  1. 更改window的位置后,您无法执行任何代码 - 您已完成
  2. 在新窗口中打开的文档无法与旧窗口通信,因为它不是HTML页面,您无法在那里执行任何JavaScript
  3. 没有办法说明如何处理文件。您可以根据所使用的浏览器类型和操作系统做一些猜测工作,但这总是一个猜测。它可以下载,在一些插件中打开,在Chrome Frame(即将推出的功能)中本地打开,在MS Word中自动打开......可能的结果是无穷无尽的。
  4. 我建议你重新考虑一下你的网站逻辑。

    我建议执行一些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从另一个窗口打开窗口,则有一个父属性;它可以用来在两个窗口之间进行通信。