Почему в Facebook есть случайные идентификаторы элементов? - PullRequest
5 голосов
/ 12 августа 2010

Я заметил, что facebook имеет случайные идентификаторы элементов для каждого элемента, включая элементы, которые не имеют уникального идентификатора элемента.

<div id="__w2_YvdN1r2_loading">blah</div>

Есть идеи, почему они делают это на каждом элементе и как они это делают?

Ответы [ 4 ]

3 голосов
/ 12 августа 2010

Одной из причин «почему», которую я могу придумать, является предотвращение или, по крайней мере, уменьшение частоты скрининга экрана - если идентификаторы действительно случайные. Что касается того, как существует множество способов генерировать псевдослучайные значения, и любой из них может быть принудительно приведен к получению строки, которая напоминает __w2_YvdN1r2.

Учитывая, насколько тяжелым является Javascript для Facebook, я был бы весьма удивлен, если бы идентификаторы были такими случайными, как вы думаете, если только значения не выводятся также в массив / объект / хранилище javascript некоторого описания для страниц JavaScript, которые будут использоваться.

0 голосов
/ 09 февраля 2014

Предоставление каждому элементу уникального идентификатора гарантирует, что FB может ссылаться на определенный элемент с помощью скриптов.Например, FB может иметь скрипт, который прокручивает страницу до обновленного элемента, и он хочет, чтобы скрипт работал для всех элементов.Кроме того, таким образом, каждый элемент может использоваться как идентификатор фрагмента в URL.Это также позволяет вам постоянно ссылаться на любой элемент на странице.Так, например, если я хочу связать вас с разделом «примеры» страницы идентификатора фрагмента в Википедии, то я буду использовать идентификатор этого элемента в качестве привязки с #:

<a href="http://en.wikipedia.org/wiki/Fragment_identifier#examples">my link text</a>

Вау.Мета.

Что касается того, как, мы не знаем, потому что это закрытый источник.Но FB написан на PHP, поэтому они могут использовать что-то вроде uniqid .

0 голосов
/ 12 августа 2010

Я предполагаю, что это ссылка на UUID в кодировке base64, с которыми они могут быть связаны - возможно, представляющие пользователя или токен.

0 голосов
/ 12 августа 2010

Так что это сложнее поцарапать, вероятно, просто последовательность случайных символов.

...