615

кое-что о хтмл, яваскрипт, страницах, перезагрузках

"Действующие лица. Дед мой лет восьмидесяти, почти слепой, не следящий за новостями лет 10, и я, собственной персоной.- Лёша, а кем ты работаешь?- Программистом.- Программистом. – задумался – ааа. Знаю. Ты программы пишешь!- Ддда. – видели бы вы моё лицо.- Программы пишешь... для этих как их.. депутатов..."Давно хотел это написать. Первый порыв сорвался из-за новых мыслей. Пришли мысли ещё. Потом ещё. Когда понял, что новое может появляться бесконечно, решил написать то, что уже додумал.Начнём. Столкнулся с задачей. Есть список фамилий и имён, к примеру. Число их – тысячи. Пользователь на форме вводит их по одному. Нажимает кнопку субмит, там они проверяются, и если что выдаётся "ЕРРРОР!". Шеф посмотрел, и говорит "вот ты на делфе делал, чтоб всё сразу проверялось, здесь тоже так надо! Без нажатия на кнопку, чтоб быстрее было". Перевожу. Надо, чтобы проверка имени проходила без перезагрузки.Решение в лоб. Пшп-ка выдаёт массив яваскрипту. И при добавлении на форме фамилии яваскриптом проверяем, то или не то. Примерно вот так:
Вроде всё просто и красиво. Решение в лоб почти всегда отличается простотой :)Минусы – страница грузиться долго. Нет, не долго, очень долго. В моём примере было 100 тыщ фамилий, представляете себе размер файла, который летел к пользователю? Думай, Вася, говорю я себе (я всегда, когда чувствую, что плохо думаю, называю себя Васей почему-то, наверно, со школьных времён осталось :) ).Следущее решение, тоже в лоб.Я вот прочитал, что такое iframe. Решил использовать его onload.Идея в чём. При нажатии на кнопку в невидимый фрейм загружается страница проверки. Результат пусть будет труе или фалсе – пока нам подходит. Когда страница загрузиться, всё выйдет очень красиво :). В этом случае посылается мало, даже при удалённом соединении скорость приемлена. Можно ещё потом добавить моменты – создать список на яваскрипте и когда юзер добавляет имя – чтоб этот запрос попадал в список, если окно фрейма не грузиться – то взять значение из списка и проверить его через сервер. Если грузиться фрейм ещё – потерпеть чуть. Пока яваскрипт терпит, пользователь может дальше вводить свои значения. Намного он не убежит вперёд :). Явные недостатки – Експлорер 5.5 требуется. Всё время подгружается сеть. Загрузка есть загрузка. Для моего примера – решение не столь круто выглядит, как на примерах, которые я рассмотрю ниже.Итак реализация:
количество карт:
фамилии:
Фамилия для добавления:


Много получилось? Ну и нехай. Зато папство :).Дальше. На работе секретарша (или кто она? Я сам пока не знаю :) )мне сказала "ой! А я из екселя хочу сразу большой список вставить, как это сделать". Я не обиделся. Сделал.Добавил текстарею, кнопку, по которой генерячиться строка. Для всех фамилий+ (что важно fio передаётся как fio[] в пшп проверяем, а масив ли fio, если да, обрабатываем весь массив, результаты в зависимости от ответа, в текстарее оставляют те фамилии, что не подошли (их список можно выдавать пшп-кой. Или просто порядковый номер. Главное не забыть, если порядковый номер, текстарею превратить в реадонли, чтоб польователь не написал/изменил/вставил/удалил ещё фамилии.) преимущества – когда много сразу инфы, то шустрее. Для сетки приятней. И если правильно писать запросы (о! Я ещё хочу такую статью написать, только когда?:) ), то для базы приятно. Если дело в базе, конечно.Идём дальше. Зачем нам ВООБЩЕ субмитить эту страницу? Мы ж можем нарисовать яваскриптом в ифраймеdocument.write(‘
’)и субмитнуть её.И потом вывести ок или не ок и из-за не ок и тд и тп. Если ок, то можно сразу видоизменить форму, чтоб она стала для изменения (без перезагрузки! Что очень важно отметить)Можно добавить кнопку «новый», которая вдруг превратит нашу страницу изменения в добавление нового. Без перезагрузки.То есть у нас есть что? Большая страница. Которую можно сделать хтмл-ой (желательно :) ), которая позволяет без перезагрузки изменять/добавлять, просматривать (что нам мешает добавить просматривание? ). Она хтмл-ка? Прекрасно. Она разок загрузиться и ОПА. В следущие разы она берётся из кэша!!!«нет предела совершенству»игры помогают... иногда :)я играюсь на Комбатс.ру (уже недели две не играл – достало :) ).Во время многочисленных игр, не обращал внимание на саму разработку. Первое, что мне бросилось в глаза – это чат (остальное сегодня не буду рассматривать, тк не так интересно, да и не в тему). Без перезагрузки. Работает на 5-ом эксплорере.Открываю хтмл-код. Опа, у них фреймы, а не ифреймы, всё жуть, я крутой,умный и тд. Закрыл. Открыл снова. Ёпрст! У них нет онлоада.Идея простая. В фрейме, который не виден, который занимается передачей данных серверная часть возвращает не какие-то нереальные данные, а примерно вот такчто случиться, думаю, все понимают. То есть нам уже не надо следить, когда онлоад случиться. Он как бы сам всё сделает. Кроме того, таким образом можно делать с основной страницей почти всё, что угодно. Удалять что-то, выходить, изменять. Вы представьте себе форум.мд.который не перегружается. Нажимаете кнопку «обновить» (не у эксплорера, а где там, на странице), опа – обновился. Сколько у вас текста? 2К? Тогда 4К примерно и будет по сети бегать. А сейчас? 60К вроде. Разница? В 15 раз. Круть? Круть!Пойдём далее. Про передачу. Нам нужно вывести 30 строчек, чтоб они добавились на основную страницу (кстати, добавление на основную страницу – дело техники :), нет ни времени, ни возможностей описать – тк ещё больше статья выйдет :)), а каждая строчка – это ссылка на один и тот же скрипт с разными параметрами. Да ещё и в таблице. Вариантdocument.write (‘
...’)это решение в лоб. а если вот так?вторая часть скрипта может быть в нашем фрейме. А может и не быть :). Ведь это можно использовать просто для любых страниц. Не обязательно для тех, что без перезагрузки работаю. Разница существенная. При 50 ссылках будет видно не вообружённым взглядом :)вроде всё.ВЫВОД: совершенствоваться, совершенствоваться и ещё раз совершенствоваться!
0