Vidhya Raju Ответов: 0

Значок загрузки продолжает отображаться во время загрузки файла


При загрузке pdf-файла значок загрузки продолжает отображаться на странице. Похоже, что функция beforeunload срабатывает при загрузке файла. В чем может быть ошибка в моем коде?

t1.php
<html>
<head>
<script src="http://code.jquery.com/jquery-1.9.1.js" type="text/javascript"></script>
</head>
<body>
<script>
        $(window).on('beforeunload', function(event) {
            $('#loading').show();
        });
        $(window).on('load', function(event) {
            $('#loading').hide();
        });
 </script>  
 <div id="loading">Loading...</div>
 <a href="t1.php?pdf=<?php echo 'Intro.pdf';?>"><button>download</button></a>
    <?php
        if(isset($_GET['pdf'])){
            $bbpdf = $_GET['pdf'];
            header("Pragma: public"); // required
            header("Expires: 0");
            header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
            header("Cache-Control: private", false); // required for certain browsers
            header("Content-Type: application/pdf");
            header("Content-Disposition: attachment; filename=\"" . basename($bbpdf));
            header("Content-Transfer-Encoding: binary");
            header("Content-Length: " . filesize($bbpdf));
            ob_clean();
            flush();
            readfile($bbpdf);
        }        
    ?>
</body>
</html>

ramyajaya

Проблема, которую я нахожу в вашем коде, - это $window.груз не будет перезваниваться . Это не будет вызвано после загрузки вашего документа, так как, Поскольку вы выполняете все операции на одной странице, функция загрузки будет вызвана при загрузке страницы или обновлении.

Вы можете попробовать какой-нибудь другой вариант, например отобразить загрузочный div при вызове функции get pdf pho и скрыть его, когда эта функция завершит свои операции

Надеюсь, это поможет

Vidhya Raju

Я попробовал php-программу в отдельном файле, тогда тоже существует такая же проблема. Однако страница не выгружается до запуска функции unload

ramyajaya

если вы готовы использовать два php, то $(window).функция загрузки не требуется.
она течет вот так

Currentwindow.РНР-&ГТ; кнопку нажмите-и GT; окно.разгрузить дисплей загрузки сообщение-&ГТ; download.php делает операции загрузки и в итоге это перенаправление тока windows.php

Vidhya Raju

Но мне нужно, чтобы функция beforeunload и load отображала значок загрузки при перенаправлении на другую страницу. Просто я столкнулся с проблемой при загрузке файла. почему функция beforeunload срабатывает, когда я пытаюсь загрузить файл? Нет способа решить эту проблему?

ramyajaya

Вместо beforeunload попробуйте выгрузить событие, так как работа этого события отличается от браузера к браузеру .

Ссылка : https://api.jquery.com/unload/

Vidhya Raju

событие выгрузки не работает, так как оно было устаревшим. Только перед загрузкой работает.

ramyajaya

Попробуйте воспользоваться этим
$(window).on('unload', функция(событие) {
$('погрузка#').показать();
});

Вместо beforeunload

Это показывает msg когда вы переходите за пределы страницы а не на любое событие происходящее внутри страницы так что ваш метод get будет вызван первым

Pankaj Nikam

Привет,

Удалось ли вам решить этот вопрос? У меня та же проблема.

Спасибо.

0 Ответов