Как закрыть окно браузера после перенаправления в файл Excel, автоматически открытый в Excel? - PullRequest
3 голосов
/ 11 октября 2011

В веб-приложении, над которым я работаю, есть несколько длительных процессов, отвечающих за генерацию документов Excel. Мы в основном открываем всплывающее окно с window.open, которое заботится о опросе сервера, чтобы сообщить о состоянии процесса и дождаться доступности документа, и перенаправить на сгенерированный документ, когда он будет готов (window.location = THE_URL_OF_THE_FILE).

Когда происходит перенаправление, в зависимости от конфигурации пользователя (см. База знаний Microsoft ), лист Excel может быть открыт / встроен непосредственно в Internet Explorer, или он может открыть файл в новом экземпляре Excel.

В последнем случае документ успешно открывается в Excel, но окно, вызвавшее его открытие, остается там навсегда.

Есть ли способ принудительно закрыть это окно, как только Excel успешно загрузит файл?

Полагаю, это как-то связано с тем, как работает интеграция между IE и Windows ...

Ответы [ 2 ]

1 голос
/ 11 октября 2011

Один из вариантов - сделать так, чтобы всплывающее окно выполняло перенаправление (через мета-редирект, javascript и т. Д.), А затем использовало тайм-аут javascript, чтобы закрыть окно, после того как браузер выделил немного времени для загрузки Excelфайл.

<html>

<head>
    <meta http-equiv="refresh" content="0;http://example.com/yourfile.xls" />
    <script type="text/javascript">
        function closeMe() {
            window.close();
        }
        setTimeout(closeMe, 5000);
    </script>
</head>

<body>
</body>
</html>

Если Excel откроется в браузере, html / js исчезнет.В противном случае Excel будет запускаться в отдельном окне, а затем JS пинает через 5 секунд, чтобы закрыть всплывающее окно.

0 голосов
/ 11 октября 2011

Съемка с бедра здесь, но я бы установил глобальную переменную (javascript) в родительском окне и затем проверил ее после того, как мое окно опроса открыло документ Excel. Если переменная все еще существует, вы знаете, что документ открыт в Excel. Если переменная не существует, вы знаете, что документ Excel открыт в браузере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...