Как я могу получить Stackoverflow / Stackexchange - как всплывающие подсказки с тэгами? - PullRequest
5 голосов
/ 18 октября 2011

При наведении указателя мыши на тег в Stackoverflow появляется всплывающая подсказка, как показано ниже.Это, вероятно, реализуется через jquery.append, поскольку он вставляет HTML-код в самый конец HTML-документа.При каждом событии зависания, после некоторой задержки, делается AJAX-запрос, - вероятно, через jquery.load (...)

URL-запрос, отправленный на webapps.stackexchange.com, например, _ = 1318962590136, который является динамическим идентификатором.

  • 1) Как это работает на стороне клиента и сервера, и каковы преимущества?

Полезная нагрузка дляtoolip представляет собой HTML и выглядит следующим образом:

<div><div class="tm-heading">...</div></div><span>.......</span>

При выходе из тега динамически загруженный HTML-код удаляется.Стили css уже присутствуют в загруженном листе css сайта stackoverflow.

  • 2) Кажется, что ни одно первоначально объявленное событие не прикреплено к стилизованному элементу ссылки <a>, который составляет тег,Кажется, что объявляются только события mousedown (проверено через Chrome).

JavaScript-DeObfuscator дает некоторые подсказки: слушатели событий динамически добавляются и удаляются ...

function (a, b, c) {
    a.removeEventListener && a.removeEventListener(b, c, !1);
}

enter image description here

1 Ответ

2 голосов
/ 08 января 2012

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

Но лучшим способом сделать это (даже лучше, чем метод, о котором вы говорите в своем вопросе) является метод, называемый Comet. Проще говоря, комета означает, что клиент делает запрос серверу, а затем ожидает ответа от сервера (т.е. когда данные на сервере обновляются). Это означает, что сервер вызывается только при наличии обновленных данных, которые нужно отправить клиенту. Вот как (я считаю) Facebook работает, например.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...