Après fouiner un peu le code, voici une supposition:
Le conteneur de notification suivante est toujours dans le balisage de vue:
<div id="notify-container"> </div>
Ce conteneur de notification est masquée par défaut, et est peuplé par javascript dans certaines circonstances. Il peut contenir n'importe quel nombre de messages.
Si l'utilisateur n'est pas connecté
persistance: Les cookies sont utilisés pour garder la trace de savoir si un message est affiché ou non.
côté serveur code généré dans la vue: Je pense que stackoverflow ne montre qu'un seul message si vous n'êtes pas connecté Le code suivant est injecté dans la vue.
<script type="text/javascript">
$(function() { notify.showFirstTime(); });
</script>
Le showFirstTime() La méthode javascript détermine simplement s'il faut afficher le message "Est-ce votre première fois ici?" message basé sur si un cookie a été défini ou non. S'il n'y a pas de cookie, le message est affiché. Si l'utilisateur agit, le cookie est défini et le message ne sera pas affiché dans le futur. La fonction nofity.showFirstTime() gère la vérification du cookie.
Si l'utilisateur est connecté
persistance: La base de données est utilisée pour garder une trace de savoir si un message a été montré ou non.
côté serveur code généré dans la vue: Lorsqu'une page est demandée, le code côté serveur vérifie la base de données pour voir quels messages doivent être affichés. Le code côté serveur injecte ensuite les messages au format json dans la vue et place un appel javascript à showMessages().
Par exemple, si je suis connecté en vue, je vois ce qui suit dans le balisage au 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>
Ainsi, le code côté serveur soit injecte du code pour appeler la méthode « showFirstTime » si l'utilisateur n'est pas connecté ou il injecte des messages et appelle "showMessages" pour un utilisateur connecté.
En savoir plus sur le code côté client
L'autre élément clé est le "notifier" JavaScript Module Picflight a de-minified (vous pouvez faire la même chose en utilisant YSlow pour Firebug). Le module notify gère le remplissage de la div de notification en fonction du javascript généré côté serveur.
Non connecté, côté client
Si l'utilisateur n'est pas connecté, puis gère le module des événements lorsque des des de l'utilisateur X la notification ou va à la FAQ en créant un cookie. Il détermine également si afficher le premier message en vérifiant un cookie.
vous êtes connecté, côté client
Si l'utilisateur est connecté, le module ajoute notifier tous les messages générés par le serveur dans la div de notification. Il utilise également ajax pour mettre à jour la base de données lorsqu'un utilisateur rejette un message.
Notez également que vous pouvez facilement fouiller dans ce code en utilisant: -Firebug pour Firefox -Chrome- Clic droit, "inspecter l'élément" -IE - appuyez sur f12, sélectionnez l'icône de la flèche, cliquez sur l'élément pour inspecter –