Как Instagram узнает, на какую кнопку вы нажали, не имея идентификатора или имени кнопки?

#javascript #html #jquery

Вопрос:

Очень случайный вопрос, я только что посмотрел instagram, и когда вы нажимаете на эти 3 точки в ленте на следующем посте пользователя, у вас есть несколько вариантов: https://i.stack.imgur.com/oDUXA.png

Я посмотрел, как и все, на элемент проверки, и я вижу, что для каждой кнопки одно и то же имя класса.

Итак, как они узнали, что я, например, нажал на кнопку «Перейти к публикации»?

Пример кода таков:

 <button class="testButtonClass">Report this user</button>
<button class="testButtonClass">Go to user profile</button>
<button class="testButtonClass">Cancel</button>
 

Я имею в виду, что они наверняка используют javascript, чтобы узнать, какая кнопка была нажата, так как я могу знать, что он нажал «Перейти в профиль пользователя»?

Кстати, используя имя (пример ниже), это будет проще, верно?

 <button class="testButtonClass" name="reportUser">Report this user</button>
<button class="testButtonClass" name="viewUserProfile">Go to user profile</button>
<button class="testButtonClass" name="cancelBtn">Cancel</button>
 

Комментарии:

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

2. @ControlAltDel они проверяют «текст» кнопки ? На уровне «Instagram»? Никогда. Они используют фреймворк, такой как ReactJS, и используют обработчики onclick, которые запускают методы. Это может быть один метод, общий для всех элементов и использующий ссылки, или для каждого элемента используется другой метод. Например, <item onClick={goToProfile} >Go to profile</item> но, конечно, они не проверяют наличие текста. Кто это делает ?

Ответ №1:

Instagram использует React JS, который позволяет привязывать функции, не получая ссылки на них по идентификатору или классу. Если вы откроете Instagram в Chrome с расширением React Developer Tools, вы действительно увидите, что он его использует.

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