Как стать автором
Обновить
45
0
Павел @fxposter

Пользователь

Отправить сообщение
DOMContentLoaded вместо onload.
C document.onclick несогласен абсолютно. Зачем мне обрабатывать клики по документу? К тому же этот подход неуниверсален ну ни капельки:
if (sender.tagName == 'A' && (m = (sender.href || '').match(/reply\.php\?comment_id=(\d+)/)))
Это условие вполне может быть true на других элементах, которым я бы не хотел менять стандартную функцию onclick. Так что так как написали вы я бы делать не стал ни при каких обстоятельствах.


> 1. Код начинает работать сразу - не нужно дожидаться окончания загрузки страницы.
DOMContentLoaded

> 2. Всего один обработчик, одна функция.
У меня тоже одна вообще-то ;)

> 3. Если меняется структура документа (добавляются новые ссылки), все по прежнему работает, никаких дополнительных действий не нужно.
А если меняется href у ссылок? :) Да и опять же - я хочу использовать только КОНКРЕТНО УКАЗАННЫЕ элементы. Если действительно эти элементы выбирать здесь - получиться ужасающий код (проверка - подходит ли текущий тег A под указанной мной селектор).

> 4. Не нужно обходить все узлы документа, чтобы что-то с ними сделать (в нашем случае добавить обработчик). Да вы это напрямую не делаете когда используете
См. предыдущий ответ.

> 5. Не нужно больших усилий чтобы добавить обработчики для других элементов или типов ссылок (добавляем в эту функцию дополнительные if или case).
Ох уж мне эти ваши if'ы. Зачем мне это делать, если я могу просто указать - каким элементам что нужно делать?

> 6. Не требуется назначать класс (если конечно, вы не хотите добавить стиль в CSS для таких ссылок) и id, ведь в href уже есть то, что нам нужно.
Я href мог бы использовать и у себя. href или id - это непринципиально.
> нужно убрать инлайн-стиль и в обработчике нажатия добавлять блоку класс, который делает его видимым через css.
Вот как раз про CSS и ненужность вот таких инлайн-стилей говорилось и писалось уже кучу раз. К моей теме это прямого отношения не имеет, согласись? :)


> Так почему бы не создавать форму при нажатии на ссылку? В таком случае не потребуется даже класс для управления видимостью блока. А скрипт в онлоаде полегчавшей страницы быстрее навешает обработчики нажатий.
Цель была не в оптимизации. Если бы я оптимизировал - я бы сразу создал одну форму для всех комментариев, а потом бы переносил её в нужное место с помощью JS.
Да, с window можно было поработать через addEventListener, но... Это, как ты правильно заметил, всего лишь пример. Последний код я вообще привел лишь с той целью, чтобы показать - как это ВООБЩЕ можно подключить через внешний файл.
Давайте не будем холиварить? :) Я сам jQuery использую, но уважаю и другие JS-фреймворки.
Возможно. Я сам jQuery использую просто. А на прототипе привел код лишь потому, что он "ближе" к стандартным event'ам JavaScript'а.
А где я что-то ущемлял? Матчасть почитайте, а потом уже говорите.
Вы знаете, что такое DOMContentLoaded? И когда он вызывается? Сразу же, как только полностью загрузится HTML. Это самый что ни на есть хороший способ вешать события на элементы, не ждя, пока загрузится всё остальное.
Вы дублированием занимаетесь, когда проставляете одни и те же вызовы функций напрямую в HTML. Не согласны? :)
И не нужно мне рассказывать, что это всё генерируется серверным языком программирования. Это фигня - повторения есть? Есть! Вот мы их как раз и убираем.
Я пишу код для себя, либо для того, кто возможно будет доделывать приложение после меня. Для пользователей я пишу сайты/приложения, но никак не код.

Про выигрыш - протестируйте, потом даже результаты можете сюда выложить. Я не вижу в коде мест, которые были бы "тормозящими".
Этот пост я видел. Про unobtrusive js - один параграф, который тему ну никак не раскрывает.
Не сравнивал. И не собираюсь. Я не пишу кривой код ради мизерных выигрышей в производительности. По логике скорость будет примерно одинаковая.
Symfony пишется через f. Использую именно этот фреймворк.
А какое отношение PHP имеет к "FULLTEXT или LIKE"?
Ну, мы в данном случае, наверно, говорим о возможностях поиска самой БД.
Хотя в образовательных целях подойдет. :)
Я тебе могу сказать, что эксперимент не то, что на чистоту - вообще не может на что-либо претендовать... Начать хотя бы с того, что замерять скорость работы MySQL через PHP... Хотя бы через консольное приложение MySQL'я запустил...
А можно конкретней про условия испытания? Как запускали, какая операционная система?
А при 1000 записей об полнотекстовом поиске и не думают.
"Как на трупа - я чувствую себя вполне неплохо!" Так, что ли? Подумал бы сначала, что писать...
Нет, ну jQuery - это библиотека отнюдь не для Ajax'а, точнее - ajax в ней не главное. Там много всяких удобных вещей.

Информация

В рейтинге
Не участвует
Откуда
Днепр, Днепропетровская обл., Украина
Дата рождения
Зарегистрирован
Активность