JavaScript, приведенный ниже код, имеет два шага.Как подождать location.href для завершения в JavaScript?
Шаг 1: перейдите в .pdf, .doc, .exe или что-то, что не является родным html. Если location.href занял окно браузера, то нет необходимости делать шаг 2. (PDF-файлы обычно берут окно браузера). Большинство других функций запускает процесс диспетчера загрузки. Например, .exe. Но есть некоторые вещи, такие как текстовые документы, которые могут быть загружены или показаны прямо в окне браузера в зависимости от настройки браузера. Я хочу, чтобы он сделал то, что сделал бы он.
Шаг 2: Если после этого процесс загружается с файлом, например, .exe, перейдите на главную страницу.
Или решение для ожидания всего 5 секунд между шагами 1 и 2, похоже, работает большую часть времени. Но при более медленном соединении это не всегда срабатывает. Затем он переходит на домашнюю страницу, не заканчивая первый вызов href.location, и они никогда не видят PDF-файл и не видят домашнюю страницу.
FYI ... Причина, по которой я обматываю их в setTimeOut, связана с этой проблемой firefox. Stack Overflow: 864633 assigning-to-document-location-href-without-clobbering-history
Мой вопрос: Есть ли способ рассказать, когда процесс location.href завершен?
<script language="JavaScript"><!--
function windowOnLoad() {
setTimeout(function(){
location.href='/someurl/something.pdf'; //sometimes this is .doc file
},0);
setTimeout(function(){
location.href='/homepage';
},5000);
return false;
}
//-->
</script>
У вас установлен PHP? – powtac
Вы не сможете сделать это только с помощью javascript, если вы не используете ajax для отправки запроса. Прочтите это, это может помочь: http://stackoverflow.com/questions/1524487/browser-download-complete-event – Andrew