Как мне перенаправить на новую страницу после загрузки с использованием Javascript?

0

У меня есть форма для загрузки некоторых файлов. Пользователь выбирает файл из раскрывающегося списка, а затем нажимает кнопку, чтобы выполнить загрузку. Код выглядит так:

  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.

В идеале, загрузка начнется, а затем пользователь автоматически попадет на новую страницу, которую я укажу, в то время как загрузка продолжается как фоновый процесс.

Еще более идеально, на новой странице я хочу включить сообщение "Спасибо, что вы загрузили". Это сообщение должно появляться только на этой странице, когда пользователь был доставлен туда после прохождения процесса загрузки.

Это то, чего я пытаюсь достичь?

(Я вижу, что на этом сайте есть много записей для перенаправления и загрузки, но, похоже, это вопрос, в котором важны детали, и ни один из них не соответствовал моей ситуации достаточно близко, насколько я мог судить.)

Теги:

2 ответа

0

сначала либо перенаправить пользователя, чтобы поблагодарить страницу, используя -

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();
}
-1

попробуйте location.href вместо window.location.href

  • 0
    Спасибо за ответ. Однако, как я упоминал в другом ответе, использую ли я window.location , location.href или window.location.href , если у меня их два, используется только второй из двух.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню