Привет всем разработчикам! Есть рабочий код на PHP + JavaSript, основной смысл которого показать 10-секундную задержку перед скачиванием файла. При скачивании хочется подставить более-менее семантическое имя, а не 0013, для этого, передаю параметр download в window.location.search, но ничего не происходит... Что сделано не так? PHP: <div class="divblock"> <?php $formats[] = ['is_url' => $books[0]->books_is_fb2_url, 'extension' => '.fb2', 'button_label' => 'FB2']; $formats[] = ['is_url' => $books[0]->books_is_txt_url, 'extension' => '.txt', 'button_label' => 'TXT']; $formats[] = ['is_url' => $books[0]->books_is_pdf_url, 'extension' => '.pdf', 'button_label' => 'PDF']; $formats[] = ['is_url' => $books[0]->books_is_epub_url, 'extension' => '.epub', 'button_label' => 'ePub']; foreach ($formats as $format) { if ($format['is_url']) { ?> <div class="download-container"> <div class="download-btn-<?php echo $format['button_label']; ?>" onclick="SubmitForm('download<?php echo $books[0]->books_id; ?>');">Скачать <?php echo $format['button_label']; ?><span></span></div> <div class="countdown-<?php echo $format['button_label']; ?>"></div> <div class="pleaseWait-text-<?php echo $format['button_label']; ?>">Формирование ссылки для скачивания...</div> <div class="manualDownload-text-<?php echo $format['button_label']; ?>">Если загрузка не началась, пожалуйста, <a href="<?php echo $downloads_path, str_pad($books[0]->books_id, 4, '0', STR_PAD_LEFT), $format['extension']; ?>" download="<?php echo $books[0]->books_en_name, $format['extension']; ?>" onclick="SubmitForm('download<?php echo $books[0]->books_id; ?>');">кликните по ссылке</a>.</div> </div> <style> .download-btn-<?php echo $format['button_label']; ?> { background-color: #ffffe0; cursor: pointer; font-size: 100%; text-align: center; padding-left: 2px; display: block; line-height: 26px; margin-bottom: 2px; text-decoration: none; font-weight: normal; border: 2px solid #8d8d8d; voice-family:"\"}\""; /* Box Model fix */ voice-family: inherit; border-radius: 10px; width: 120px; } .download-btn-<?php echo $format['button_label']; ?>:hover, a.download-btn-<?php echo $format['button_label']; ?>#active_menu { background: #daa520; text-decoration: none; } .pleaseWait-text-<?php echo $format['button_label']; ?> { display: none; } .countdown-<?php echo $format['button_label']; ?> { display: none; width: 70px; height: 70px; background: url('http://img3.depositfiles.com/images/timer.gif') no-repeat; text-align: center; } .manualDownload-text-<?php echo $format['button_label']; ?> { display: none; } </style> <script type="text/javascript"> const downloadBtn<?php echo $format['button_label']; ?> = document.querySelector(".download-btn-<?php echo $format['button_label']; ?>"); const countdown<?php echo $format['button_label']; ?> = document.querySelector(".countdown-<?php echo $format['button_label']; ?>"); const pleaseWaitText<?php echo $format['button_label']; ?> = document.querySelector(".pleaseWait-text-<?php echo $format['button_label']; ?>"); const manualDownloadText<?php echo $format['button_label']; ?> = document.querySelector(".manualDownload-text-<?php echo $format['button_label']; ?>"); var timeLeft<?php echo $format['button_label']; ?> = 9; downloadBtn<?php echo $format['button_label']; ?>.addEventListener("click", () => { downloadBtn<?php echo $format['button_label']; ?>.style.display = "none"; countdown<?php echo $format['button_label']; ?>.style.display = "block"; countdown<?php echo $format['button_label']; ?>.innerHTML = '<span class="countdown_span">' + timeLeft<?php echo $format['button_label']; ?> + '</span>'; var downloadTimer<?php echo $format['button_label']; ?> = setInterval(function timeCount<?php echo $format['button_label']; ?>(){ timeLeft<?php echo $format['button_label']; ?> -= 1; countdown<?php echo $format['button_label']; ?>.innerHTML = '<span class="countdown_span">' + timeLeft<?php echo $format['button_label']; ?> + '</span>'; if(timeLeft<?php echo $format['button_label']; ?> <= 0){ clearInterval(downloadTimer<?php echo $format['button_label']; ?>); pleaseWaitText<?php echo $format['button_label']; ?>.style.display = "block"; let download_search<?php echo $format['button_label']; ?> = "?download=<?php echo $books[0]->books_en_name, $format['extension']; ?>"; let download_href<?php echo $format['button_label']; ?> = "<?php echo $downloads_path, str_pad($books[0]->books_id, 4, '0', STR_PAD_LEFT), $format['extension']; ?>"; window.location.search = download_search<?php echo $format['button_label']; ?>; window.location.href = download_href<?php echo $format['button_label']; ?>; setTimeout<?php echo $format['button_label']; ?>(() => { pleaseWaitText<?php echo $format['button_label']; ?>.style.display = "none"; manualDownloadText<?php echo $format['button_label']; ?>.style.display = "block"; }, 4000); } }, 1000); }); </script> <?php } } ?> </div>
да практически всё. ))) от того что ты будешь красивое подставлять в location на фронтенде, бекенд не начнет понимать "красивые" имена. начни с бека - т.е. с пхп. спроси так: "у меня файлы хранятся вот так, а я хочу их раздавать вот по таким URL-ам. как такое сделать?" кнопки-шнопки и вся магия фронт-энда тут ВООБЩЕ НЕ ПРИ ЧЁМ. --- Добавлено --- программист может разбивать задачу на подзадачи так, чтобы каждая подзадача была понятна самому. или чтобы вопрос о непонятном был понятным. )))