У меня есть форма для загрузки некоторых файлов. Пользователь выбирает файл из раскрывающегося списка, а затем нажимает кнопку, чтобы выполнить загрузку. Код выглядит так:
function downloadApp()
{
var dd = document.getElementById("OSselectDropdown");
var OSchoice = dd.options[dd.selectedIndex].value;
if (OSchoice == "win")
{
window.location.href = "https://" + top.location.host + "/download/win_install.exe";
}
if (OSchoice == "mac")
{
window.location.href = "https://" + top.location.host + "/download/mac_install.pkg";
}
if (OSchoice == "linux")
{
window.location.href = "https://" + top.location.host + "/download/linux_install.tar.gz";
}
То, что я хочу добиться, - это переход пользователя на новую страницу после начала загрузки. Однако я не вижу, как это сделать, потому что сама загрузка по существу является перенаправлением на место для загружаемого файла, используя window.location.href
. Как только это будет обработано, кажется невозможным получить Javascript для выполнения второго window.location.href
.
В идеале, загрузка начнется, а затем пользователь автоматически попадет на новую страницу, которую я укажу, в то время как загрузка продолжается как фоновый процесс.
Еще более идеально, на новой странице я хочу включить сообщение "Спасибо, что вы загрузили". Это сообщение должно появляться только на этой странице, когда пользователь был доставлен туда после прохождения процесса загрузки.
Это то, чего я пытаюсь достичь?
(Я вижу, что на этом сайте есть много записей для перенаправления и загрузки, но, похоже, это вопрос, в котором важны детали, и ни один из них не соответствовал моей ситуации достаточно близко, насколько я мог судить.)
сначала либо перенаправить пользователя, чтобы поблагодарить страницу, используя -
window.location = thankYouPageURL;
вы можете сохранить другой URL для каждой ОС, или вы можете передавать параметры в процессе получения и обработки параметров GET на стороне JavaScript, используя некоторую библиотеку.
Или перейдите на ту же страницу к другой части, используя хэш.
location.hash = "#" + thankYouHash;
вы также можете сделать наложение div или аналогичный подход для этого. после выбора параметров загрузки переключите видимость ThankYouDiv и скройте предыдущий div, где присутствовали параметры загрузки.
на странице благодарности /div/хэш запустите загрузку с помощью нового окна или iframe.
IFRAME -
function startDownload(downloadUrl) {
var downloadFrame = document.createElement("iframe");
downloadFrame.setAttribute('src',downloadUrl);
downloadFrame.setAttribute('style',"border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px;");
document.body.appendChild(downloadFrame);
}
Загрузить окно -
function startDownload(downloadUrl) {
window.open(downloadUrl, 'download_window', 'toolbar=0,location=no,directories=0,status=0,scrollbars=0,resizeable=0,width=1,height=1,top=0,left=0');
window.focus();
}
попробуйте location.href
вместо window.location.href
window.location
,location.href
илиwindow.location.href
, если у меня их два, используется только второй из двух.