LINUX.ORG.RU

Почему не стоит пользовать addEventListener

 


0

1

Я впрошлом треде пытался выяснить есть ли преимущества сабжа перед on-свойствами объектов. И, на данный момент, я склоняюсь к тому, что никаких преимуществ нет. А вот недостатки есть — расширяемость. Я набросал вот такую вот реализацию

libEvents={
   __proto__: null,
   divClick1: function(){console.log(1)},
   divClick2: function(){console.log(2)},
   all: function(){
      for(var i in libEvents){
         if(i!=="all"){ libEvents[i]()}
      }
   }
}

div=document.createElement("div")
div.innerHTML="foo"
div.onclick=libEvents.all
document.body.appendChild(div)

libEvents.divClick3=function(){console.log(3)}

div2=document.createElement("div")
div2.innerHTML="bar"
div2.onclick=libEvents.all
document.body.appendChild(div2)
и тут, если кому-то неочевидно, у нас огромный профит в расширяемости, ибо libEvents легко можно наследовать. Конечно, мы можем сделать во так

div=document.createElement("div")
div.innerHTML="foo"
div.addEventListener("click", libEvents.all)
document.body.appendChild(div)

libEvents.divClick3=function(){console.log(3)}

div2=document.createElement("div")
div2.innerHTML="bar"
div2.addEventListener("click", libEvents.all)
document.body.appendChild(div2)

Но если мы допиливаем уже готовое дерьмо, придется лазить по всему коду, и искать все addEventlistener'ы и совать все в объект.

Если Вы приведете пример, где мы можем сделать это так же легко с addEventListener, я заберу свои слова обратно.

А пока: Considered harmful



Последнее исправление: anonimous (всего исправлений: 1)

Вы

Пишется со строчной буквы, за исключением начала предложения. Иначе это хамство и безграмотность.

приведете пример, где мы можем сделать это так же легко

Вынести их в отдельный файл все как минимум. Без адекватного планирования любой подход будет ущербным, любой продукт будет неподдерживаемым и любой проект будет слишком сложным.

Goury ★★★★★
()
Ответ на: комментарий от Goury

Пишется со строчной буквы, за исключением начала предложения. Иначе это хамство и безграмотность.

Мне вообще-то срать на грамматику, но btw, Вы написали чушь.

anonimous
() автор топика
Ответ на: комментарий от Goury

Пишется со строчной буквы, за исключением начала предложения. Иначе это хамство и безграмотность.

А уважительное обращение?

Quickern ★★
()
Ответ на: комментарий от anonimous

Нет. Я констатировал факт безграмотности.
Иначе приводите аргументы.

Мой аргумент заключается в том, что по правилам русского языка с заглавной буквы пишутся:
1. Слова в начале предложений
2. Имена собственные
3. Названия

Аргументация проводится на основе свода правил русского языка, в котором отсутствуют разрешения на написание этого слова с прописной буквы.

А у тебя вместо агрументации только хамство и оскорбления.

Goury ★★★★★
()
Ответ на: комментарий от Goury

Аргумент:

Местоимения Вы и Ваш пишутся с прописной (большой) буквы как форма вежливого обращения к одному лицу. При обращении к нескольким лицам следует писать вы и ваш со строчной буквы. Написание Вы, Ваш с прописной при обращении к нескольким лицам – ошибка.

Источник: http://gramota.ru/spravka/letters/?rub=rubric_88 Но он обращался не к одному. Так что вы оба неправы.

Weres ★★★
()
Ответ на: комментарий от Weres

Аргумент:

У Артёмия была статья на эту тему :)

vurdalak ★★★★★
()
Ответ на: комментарий от anonimous

Тогда стоило этого одного скастовать. Тема на форуме, по умолчанию, обращена ко всем его участникам. Но право слово, не имеет никакого значения, с какой буквы вы написали слово «Вы».

Weres ★★★
()

Я не очень понимаю чем, в вашем случае:

div.onclick=libEvents.all
принципиально отличается от
div.addEventListener("click", libEvents.all)

On свойства, как вы выражаетесь, точно так же навешивают события на заранее определенные действия (не берусь утверждать, но в современных браузерах - onclick скорей всего вызывает addEventListener(«click»,...,...)).

По факту вы написали в обоих кусках кода одно и то же.

С помощью addEventListener вы также можете слушать любые кастомные события и навешивать на 1 событие несколько действий.

Megamozg
()
Ответ на: комментарий от Weres

Ладно, это гнилая тема, надо завязывать офтопить. Напоследок лишь замечу, что есть такой стилистический прием, как обращение к читателю. А вообще поднятый вопрос яйца выеденного не стоит. Аватар поднявшего кагбэ намекает.

anonimous
() автор топика
Ответ на: комментарий от Khnazile
el=document.createElement("p")
document.body.appendChild(el)
el.innerHTML="foo"
el_=document.createElement("p")
el_.innerHTML="foo"
document.body.appendChild(el_)
el.addEventListener("click", function(){a})
el_.onclick=function(){a}

В обоих случаях reference error

anonimous
() автор топика
Ответ на: комментарий от Quickern

Милостивая государыня, Варвара Алексеевна! Ах, маточка моя, что это с вами! Ведь вот каждый-то раз вы меня так пугаете. Пишу вам в каждом письме, чтоб вы береглись, чтоб вы кутались, чтоб не выходили в дурную погоду, осторожность во всем наблюдали бы, — а вы, ангельчик мой, меня и не слушаетесь. Ах, голубчик мой, ну, словно вы дитя какое-нибудь! Ведь вы слабенькие, как соломинка слабенькие, это я знаю. Чуть ветерочек какой, так уж вы и хвораете. Так остерегаться нужно, самой о себе стараться, опасностей избегать и друзей своих в горе и в уныние не вводить.

Уважительнее некуда.

anonymous
()
Ответ на: комментарий от Weres

АХАХАХАХА
ХАХАХАХАХ
АХАХАХАХА
ХАХАХАХАХ
АХАХАХАХА
ХАХАХАХАХ
АХАХАХАХА

С каких пор Лопатины, Розентали и Редакционно-издательское оформление издания получили приоритет перед сводом правил русского языка?

Или получается что любая глупость сказанная любым знаменитым человеков становится выше закона?

Свод правил русского языка является единственным законным определителем правил русского языка. От того, что какие-то местечковые редакторы в своих редактурах издают местечковые указания, законы не меняются.

Равно как и не имеет законной силы запрет на фотографию в магазине только потому, что у охранника такая инструкция. В России закон имеет преимущество перед любым местным самоуправством и это хорошо.

Goury ★★★★★
()
Ответ на: комментарий от anonimous

Выше я написал, что не берусь утверждать. Вы правы onclick - это обычное свойство (оно будет перезаписываться), addEventListener реализует события иначе (можно добавлять много). Тут понятно написано http://www.simonewebdesign.it/blog/onclick-vs-addeventlistener/. Оба способа обработают click. В любом случае addEventListener - стандарт для современных браузеров.

Megamozg
()
Ответ на: комментарий от anonimous

Этот ваш стилистический приём есть банальное хамство, недопустимое в публичной переписке.

По теме я уже написал: хорошее планирование и документация сделают вам применять любые подходящие подходы. И применять их можно будет потому, что они лучше подходят для решения задачи, а не потому, что так проще поддерживать или писать. Поддерживать и писать хорошо структурированный код в хорошо спланированном продукте всегда просто. А в плохо структурированный в плохо спланированном всегда сложно.

Goury ★★★★★
()
Ответ на: комментарий от anonimous

правил языка

Ты даже в JS врубиться не можешь. А все туда же, лишь бы покукарекать. Петух!

anonymous
()
Ответ на: комментарий от anonimous

Внезапно, как и не добавят Розентали и Лопатины новых правил. Равно как директор магазина не добавит новых законов о запрете фотографии.

Goury ★★★★★
()
Ответ на: комментарий от anonymous

Если бы ты гомик по сабжу мог что-то возразить, тогда твои высеры стоили бы хоть что-то. А так ты просто кукарекающий гомик.

anonimous
() автор топика
Ответ на: комментарий от anonimous

Мамку свою троллируй

Погугли, откуда я тебе цитату привел, петух.

anonymous
()
Ответ на: комментарий от Goury

Этот ваш стилистический приём есть банальное хамство

Cферический ханжа в вакууме, прицепился к нему из-за написания «вы» с маленькой буквы, а анонімус-то хамит совсем другим способом.

goingUp ★★★★★
()
Ответ на: комментарий от anonimous

Погуглил за вас, самому стало интересно: http://www.quirksmode.org/js/events_advanced.html

One problem of the current implementation of W3C’s event registration model is that you can’t find out if any event handlers are already registered to an element.

Т.е. в отличие от традиционной (старой) модели по типу onclick, на данный момент нельзя получить список зарегистрированных событий eventListenerList.

Megamozg
()
Ответ на: комментарий от Megamozg

Я собственно об этом и писал, по-сути, в стартовом топике. Спасибо.

anonimous
() автор топика
Ответ на: комментарий от Megamozg

Ну да, и значит, мое предположение правильно. Если мы пользуемся этой парашей, полноценное наследование недоступно.

anonimous
() автор топика
Ответ на: комментарий от anonimous

Ничего не понял, но это моя ошибка. Я хотел спросить, что будет с libEvents.divClick2() если в libEvents.divClick1() произойдет ошибка? В обоих случаях.

Khnazile ★★★★★
()
Ответ на: комментарий от Khnazile

Да, Вы правы, в случае

div=document.createElement("div")
div.innerHTML="foo"
div.addEventListener("click", function(){console.log(a)})
div.addEventListener("click", function(){console.log("bar")})
document.body.appendChild(div)
Этого не происходит.

anonimous
() автор топика
Ответ на: комментарий от anonimous

Вот так это можно пофиксить, если надо


libEvents={
   __proto__: null,
   divClick1: function(){console.log(a)},
   divClick2: function(){console.log(2)},
   all: function(){
      for(var i in libEvents){
         if(i!=="all"){ try{libEvents[i]()}catch(e){}}
      }
   }
}

anonimous
() автор топика

Норкоман изобрёл ненужную библиотеку чтобы решить проблему, которой нет. Офигенно.

Deleted
()
Ответ на: комментарий от anonimous

Если мы пользуемся этой парашей, полноценное наследование недоступно.

Лучше приведи пример ситуации где оно нужно.

TDrive ★★★★★
()
Ответ на: комментарий от anonimous

То есть, зачем городить велосипеды для наследования событий если они с addEventListener и так будут выполняться как надо. )

TDrive ★★★★★
()

Если Вы приведете пример, где мы можем сделать это так же легко с addEventListener, я заберу свои слова обратно.

А если тебе, к примеру, надо на колесо функцию повесить? Или на ПКМ/СКМ?

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Goury

Вы — просто обращение. Вот обращаться на «ты» к незнакомому человеку — хамство. А имени и отчества я Вашего не знаю.

Заметьте, Вы ко мне на «Вы».

Человек, возможно, и поставил большую букву случайно, а вот Вы среагировали слишком резко. Похоже на хамство, разве нет?

Quickern ★★
()
Ответ на: комментарий от Quickern

Нет. Писать безграмотно это хамство. И навязывать своё мнение это хамство и мерзость. А указывать на ошибки это правильно.

Goury ★★★★★
()
Ответ на: комментарий от Goury

Ну вот. Странно. Вы сами же нарушаете это правило, разве нет? Вы навязываете свое мнение, что обращаться на «Вы» — это хамство. Кажется, Вы запутались.

Quickern ★★
()
Ответ на: комментарий от Quickern

Я не навязываю своё мнение, я аргументированно сообщаю о неправоте. А ты ахинею ни чем не подтверждённую пишешь.

Goury ★★★★★
()
Ответ на: комментарий от Goury

Можно вопрос: «Что есть свод правил русского языка?» Ссылки — единственный аргумент в данном споре, Вам не кажется? Вы не привели ни одной. Я привожу, на всякий случай (книги, являющиеся, вообще-то, единственным регулятором правил):

[1] Правила русской орфографии и пунктуации. Полный академический справочник / Под ред. В. В. Лопатина. М., 2013. § 202

[2] Лопатин В. В., Нечаева И. В., Чельцова Л. К. Прописная или строчная? Орфографический словарь. М., 2011. С. 37

[3] Розенталь Д. Э. Справочник по русскому языку. Прописная или строчная? – 7-е изд., перераб. и доп. М., 2005. С. 302

[4] Оформление документов. Методические рекомендации на основе ГОСТ Р 6.30-97. М., 1998. С. 91

[5] Мильчин А. Э., Чельцова Л. К. Справочная издателя и автора: Редакционно-издательское оформление издания. – 2-е изд., испр. и доп. М., 2003. С. 84

[6] Русский орфографический словарь РАН / Под ред. В. В. Лопатина, О. Е. Ивановой. – 4-е изд., испр. и доп. – М., 2012. С. 70. С. 106

Quickern ★★
()
Ответ на: комментарий от Quickern

Вы не привели ни одной

Потому, что ни одной и нет. Есть параграфы 92—109 свода правил русского языка, в них описаны все случаи, в которых следует писать слова с прописной буквы. Всё! Нет больше никаких правил!

Под ред. В. В. Лопатина. М., 2013

Кто такая эта лопатина? Каким боком её самиздат может являться правилами?

Орфографический словарь. М., 2011

Что это за книжка такая? С каких пор издательство «Рога и Копыта» стало уполномоченным представителем министерства культуры и государственной думы?

Розенталь Д. Э. Справочник по русскому языку

Да хоть Пушкин, хоть tazhate — с какого перепугу их писанина стала выше закона?

Оформление документов. Методические рекомендации

Приехали, здравствуйте. А если завтра какой-нибудь местечковый директор магазина издаст указ для охраны об обязательном половом сношении при входе в магазин — во всех магазинах страны надо будет так делать? Просто потому, что где-то в мухосранске кому-то так захотелось?

Справочная издателя и автора: Редакционно-издательское оформление издания

Каким боком это вообще к правилам русского языка относится?

Русский орфографический словарь РАН

Да хоть ТРАВМ хоть СУИЦИДА, с какой стати какая-то контора стала выше закона?


Повторяю последний раз для тупых: «Свод правил русского правописания» издания 1956 года является единственным источником правил русского языка, утверждённым министерством культуры. С тех пор никаких изменений в нём так и не произошло. Единственный проект внесения изменений в правила русского языка заморозили в 2009 году.

Любая ссылка на любой другой источник является ложной.

Goury ★★★★★
()
Последнее исправление: Goury (всего исправлений: 1)
Ответ на: комментарий от Goury

Это не правда в случае разрешений спорных ситуаций. В этом случае обращаются к другим источникам (например РАН — весьма доверенный источник).

Замечу, также, что в своде не сказано как писать «Вы» и в каком случае. Там нигде не сказано, что «во всех остальных случаях писать строчную букву», разве нет? А «Вы» там не описано по одной простой причине — 1956. Более того, там есть оговорки, про возможные исключения из правил.

Конечно, я могу ошибаться, и не помнить каких-то моментов. Поправьте, если я не прав. Только с приведением цитаты, пожалуйста, не голословно.

Quickern ★★
()
Ответ на: комментарий от Quickern

Приведением какой к чертям цитаты?
Сам для начала обоснуй, с какого перепугу РАН может вдруг оказаться выше закона.

например РАН — весьма доверенный источник

У меня звёзд больше, возноси мне молитвы по утрам.

Goury ★★★★★
()
Ответ на: комментарий от Goury

Я, как бы, в отличие от Вас, заметьте, вполне обосновал: не помню там никакого упоминания «Вы». Вы же утверждаете, что оно там есть. Я и прошу Вас показать где. По-моему простая просьба.

Quickern ★★
()
Ответ на: комментарий от Quickern

0. А тебе самому так вот врать не стыдно?
1. С какого перепиху в своде правил правописания должно обговариваться каждое конкретное слово? Свод правил это не словарь. Слово «вы» это такое же слово, как и любое другое слово. Или давай доказывай мне, что слово «говно» должно писаться с прописной только потому, что какой-то безграмотный пейсатель так решил, а в своде правил нет слова «говно».

Goury ★★★★★
()
Ответ на: комментарий от Goury

Прежде чем что-то говорить, надо думать. Вы обвинили меня во лжи — обоснуйте. Где я соврал?

Свод правил говорит, как писать в тех или иных случаях. Более того, после него остается много спорных моментов. Более того, кажется в последнем пункте свода гворится, что в случае стилистического употребления может использоваться прописная буква в других словах. И под него ваш пример подходит — да, писатель может его употребить. Более того, все правила в своде основаны на том, как пишут «безграмотные пейсатели».

Quickern ★★
()
Ответ на: комментарий от Quickern

Прежде чем что-то говорить, надо думать

Ну так думай, кто ж тебе мешает

Вы обвинили меня во лжи — обоснуйте

Здесь:

Вы же утверждаете, что оно там есть.

в случае стилистического употребления

По правилам ЛОРа тут следует общаться на русском, а не на стилистическом

Goury ★★★★★
()
Ответ на: комментарий от Quickern

На самом деле в официальных письменных обращениях принято использовать Вы(к примеру, на ум приходят рудиментарные выражения вроде «Ваше высокопревосходительство»). В остальных случаях писать вы с большой буквы - признак дурного тона. И написав вы с большой буквы своё уважение адресату вы этим не выкажете.

lucentcode ★★★★★
()
Ответ на: комментарий от Quickern

А давай я сейчас возьму и покажу всем, как ты обосрался?

Итак, внимание:

ПРАВИТЕЛЬСТВО РОССИЙСКОЙ ФЕДЕРАЦИИ

ПОСТАНОВЛЕНИЕ
от 23 ноября 2006 г. N 714

О ПОРЯДКЕ УТВЕРЖДЕНИЯ
НОРМ СОВРЕМЕННОГО РУССКОГО ЛИТЕРАТУРНОГО
ЯЗЫКА ПРИ ЕГО ИСПОЛЬЗОВАНИИ В КАЧЕСТВЕ ГОСУДАРСТВЕННОГО
ЯЗЫКА РОССИЙСКОЙ ФЕДЕРАЦИИ, ПРАВИЛ
РУССКОЙ ОРФОГРАФИИ И ПУНКТУАЦИИ

В соответствии с частью 3 «статьи 1» Федерального закона «О государственном языке Российской Федерации» Правительство Российской Федерации постановляет:
Установить, что Министерство образования и науки Российской Федерации:

* утверждает на основании рекомендаций Межведомственной комиссии по русскому языку «список» грамматик, словарей и справочников, содержащих нормы современного русского литературного языка при его использовании в качестве государственного языка Российской Федерации (по результатам экспертизы), а также «правила» русской орфографии и пунктуации;

* определяет «порядок» проведения экспертизы грамматик, словарей и справочников, содержащих нормы современного русского литературного языка при его использовании в качестве государственного языка Российской Федерации.
При этом под нормами современного русского литературного языка при его использовании в качестве государственного языка Российской Федерации понимается совокупность языковых средств и правил их употребления в сферах использования русского языка как государственного языка Российской Федерации.

Председатель Правительства
Российской Федерации
М.ФРАДКОВ


Приложение

Утвержден
Приказом Министерства образования
и науки Российской Федерации
от 8 июня 2009 г. N 195

СПИСОК
ГРАММАТИК, СЛОВАРЕЙ И СПРАВОЧНИКОВ, СОДЕРЖАЩИХ НОРМЫ
СОВРЕМЕННОГО РУССКОГО ЛИТЕРАТУРНОГО ЯЗЫКА ПРИ ЕГО
ИСПОЛЬЗОВАНИИ В КАЧЕСТВЕ ГОСУДАРСТВЕННОГО ЯЗЫКА
РОССИЙСКОЙ ФЕДЕРАЦИИ

1. Орфографический словарь русского языка. Букчина Б.З., Сазонова И.К., Чельцова Л.К. - М.: «АСТ-ПРЕСС», 2008. - 1288 с.
2. Грамматический словарь русского языка: Словоизменение. Зализняк А.А. - М.: «АСТ-ПРЕСС», 2008. - 794 с.
3. Словарь ударений русского языка. Резниченко И.Л. - М.: «АСТ-ПРЕСС», 2008. - 943 с.
4. Большой фразеологический словарь русского языка. Значение. Употребление. Культурологический комментарий. Телия В.Н. - М.: «АСТ-ПРЕСС», 2008. - 782 с.

Goury ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.