Добавить эту декларацию на страницу:
var upcount = 0;
Измените свой клик на:
onclick="++upcount; swfu.startUpload();"
Если swfu
дает вам какое-то событие после завершения загрузки, поместите это на него:
--upcount;
И добавить этот обработчик:
window.onbeforeunload = function() {
if (upcount > 0) {
return "The upload is still in progress, leaving the page will cancel it.";
}
}
Где браузеры уважают onbeforeunload, это будет работать. И большинство из них делают, большую часть времени. Там, где их нет, вы пытались. Обратите внимание, что с помощью счетчика вы можете загружать несколько файлов.
Вы можете рассмотреть attachEvent (IE) или addEventListener (стандартный) (или библиотеку, такую как Prototype или jQuery, которая выравнивает различия для вас) для присоединения ваших событий вместо использования атрибутов. Использование атрибутов (иначе называемых обработчиками DOM0) довольно старомодно и немного ограничено (только один обработчик на событие на элемент). Но это все еще работает.