Тут хозяин барин. я на счет использовать плагин или эту ф-ю.
onhashchange все равно придется цеплять. Подключать его к плагину или просто чуток переделать здесь решать ТС.
Я не очень понял, что имел ввиду DelphinPRO. Но пользователь может сохранить всю страницу на своем компе, изменить ее что надо дописать или убрать. И запустить ее с локальной машины. и выполнить что там надо
Просто необходимо понимать, что только одна проверка Js не спасет(его можно тупо отключить.)
А так
находите значение value полю type='file'.
Выбираете 4 последние символа(как раз и будет расширение файла) и смотрите если все нормально то грузите файл а там снова проверяете его, если нет то сразу ошибка
Я это делал следующим образом. Сразу уточняю, я не претендую на гениальность.
Сначала я выбирал в массив типа
arrHtml[0]='<tr><td><td></tr>';/**/всю таблицу
Потом, вместо второго массива я использовал ассоциативный массив, типа
arr[0]={
index:0,/*индекс=arrHtml[0]*/
ячейка№1:5
}
arr[1]={
index:1,
ячейка№1:2
}
Сортировку многомерного массива я взял с http://webew[dot]ru/articles/2209[dot]webew
Ну а после сортировки вторго все просто, проходим новый массив и подставляем значения из массива arrHtml