После шныряли кода немного, вот догадка:
Следующий контейнер уведомления всегда в разметке:
<div id="notify-container"> </div>
Это уведомление контейнера скрыта по умолчанию, и заполняется javascript при определенных обстоятельствах. Он может содержать любое количество сообщений.
Если пользователь не вошли в системе
Постоянство: Печенье используется для отслеживания, отображаются ли сообщение или нет.
стороне сервера сгенерированный код в представлении: Я думаю, что StackOverflow показывает только одно сообщение, если вы не вошли в следующий код вводится в поле зрения:.
<script type="text/javascript">
$(function() { notify.showFirstTime(); });
</script>
The showFirstTime() Метод javascript просто определяет, показывать ли это «Это ваш первый раз здесь?» сообщение, основанное на том, установлено ли cookie или нет. Если файл cookie отсутствует, отображается сообщение. Если пользователь принимает меры, cookie устанавливается, и сообщение не будет отображаться в будущем. Функция nofity.showFirstTime() обрабатывает проверку файла cookie.
Если пользователь вошел в систему
Постоянство: база данных используется для отслеживания того, было ли показано сообщение или нет.
стороне сервера сгенерированный код в представлении: При запросе страницы, на стороне сервера код проверяет базу данных, чтобы увидеть, какие сообщения должны отображаться. Затем серверный код вводит сообщения в формате json в представление и помещает вызов javascript в showMessages().
Например, если я вошел в представление, я вижу следующее в разметке на SO:
<script type="text/javascript">
1
2 var msgArray = [{"id":49611,"messageTypeId":8,"text":"Welcome to Super User! Visit your \u003ca href=\"https://stackoverflow.com/users/00000?tab=accounts\"\u003eaccounts tab\u003c/a\u003e to associate with our other websites!","userId":00000,"showProfile":false}];
3 $(function() { notify.showMessages(msgArray); });
4
</script>
Таким образом, код на стороне сервера либо впрыскивает код для вызова метода «showFirstTime», если пользователь не входит в систему или вводит сообщения и вызывает «showMessages» для зарегистрированного пользователя.
Подробнее о коде на стороне клиента
Другим ключевым компонентом является «оповещать» JavaScript модуль Picflight имеет ДЭ-уменьшенная (вы можете сделать то же самое с помощью YSlow для Firebug). Модуль notify обрабатывает заполнение блока уведомлений на основе созданного на стороне сервера javascript.
не вошли в систему, на стороне клиента
Если пользователь не вошел в систему, то модуль обрабатывает события, когда пользователь иксы из уведомления или идет в FAQ, создавая печенье. Он также определяет, показывать ли первое сообщение, проверяя наличие файла cookie.
Помнить, на стороне клиента
Если пользователь вошел в систему, то уведомляет модуль добавляет все сообщения, генерируемые сервером в уведомлении дел. Он также, скорее всего, использует ajax для обновления базы данных, когда пользователь отклоняет сообщение.
Также обратите внимание, что вы легко можете легко прокручивать этот код с помощью: -Firebug для Firefox -Chrome- Щелкните правой кнопкой мыши, «проверьте элемент» -IE - нажмите f12, выберите значок стрелки, щелкните элемент, чтобы проверить – 2010-08-12 06:38:35