Поскольку страница заблокирована, вы ничего не можете сделать с помощью JavaScript, потому что он также заблокирован.
Но, что вы пытаетесь сделать? Вы пытаетесь каким-то образом зарегистрировать тот факт, что пользователь загружает файл? Если да, есть более эффективные способы сделать это, и они находятся на стороне сервера. Используйте серверный язык сценариев для работы с файлом и запишите тот факт, что он был загружен.
Если это не то, что вы пытаетесь сделать, то единственным способом является использование либо onclick
по ссылке или onunload
/onbeforeunload
, но они менее надежны, и я уверен, что вы найдете совершенно другое поведение в разных браузерах ,
На самом деле, теперь, когда я думаю об этом, есть еще один способ, но это очень грязный. Идея состоит в том, чтобы установить интервал для запуска каждую секунду и проверить, прошло ли между двумя прогонами более секунды. Что-то вроде:
var lastTime = new Date().getTime();
function checkTime() {
var curTime = new Date().getTime();
if (curTime - lastTime > 1100) { // 1100 because there might be small browser lags
// do something after the dialog appeared and the user did something with it
}
lastTime = curTime;
}
setInterval(checkTime, 1000);
Пожалуйста, обратите внимание, что есть браузеры (Chrome пример, я думаю), что не блок страницу в то время как этот диалог открыт, так что это может не сработать. Обязательно дважды перепроверьте все, если вы это сделаете.
Теперь мне нужно принять душ.
* «Не говорите», чтобы связать событие onclick с ссылкой, потому что сервер может реагировать очень медленно (например, через 30 секунд после нажатия) ». * Что бы ** сервер ** имел к этому отношение? Когда вы выбираете файл, это все клиентская сторона. Сервер не участвует, пока вы не отправите форму. –
Фактически, я отправляю форму, когда нажимается ссылка, и ответ формы - это файл, а не html-документ. – Feyyaz
Какой браузер вы используете? Я тестировал в IE, Firefox, Opera и Chrome. Chrome был единственным, кто «заблокировал» страницу. – nemetroid