Posts tagged ‘html’

Les notifications

Introduit parmi les nouvelles fonctionnalités de l’HTML5, les notifications permettent aux sites web (que vous autorisez) de vous informer d’une activité sur un site. C’est comme les notifications de MSN messenger, quand une fenêtre apparaît en bas à droite de l’écran.

L’API supporte deux fonctions pour créer des notifications : soit à partir d’une URL, soit à partir d’une icône, d’un titre et d’une description. Utiliser une URL d’un fichier HTML permet d’avoir beaucoup plus de possibilités, au niveau de l’interaction comme au niveau de l’affichage (gras, images, liens, etc).

Utilisation dans chrome

Pour l’instant, chrome est le seul navigateur à supporter ce standard (sous Linux, hein !).

Voici un petit exemple de script (plus de détails dans la doc de chrome) :

  1. function showNotification()
  2. {
  3.   // Création de l'objet, puis affichage
  4.   var notification = webkitNotifications.createHTMLNotification('http://monurldenotification.com/');
  5.   notification.show();
  6. }
  7.  
  8. function sendNotification()
  9. {
  10.   var auth = webkitNotifications.checkPermission();
  11.   if (auth == 0) showNotification(); // Autorisé
  12.   else if(auth == 1) webkitNotifications.requestPermission(sendNotification); // Demande la permission
  13.   else { } // Refusé
  14. }
  15.  

Les limites

Malheureusement, il n’est pas possible de faire tout ce qu’on veut . Voici quelques limitations encore valables à ce jour :

  • Impossible de dialoguer entre la desktop notification et le script qui l’a ouverte ;
  • Impossible de spécifier une adresse du type data:text/html,<h1>test</h1>

A améliorer donc, afin d’avoir une réelle possibilité d’intégration dans des applications (type chat, …).

Problème

Lorsque l’on parse des fichiers, surtout les fichiers HTML, on a parfois besoin d’extraire un texte compris entre deux balises. Voici donc un moyen d’y parvenir avec les expressions régulières.

Considérations techniques

Je parlerais ici des expressions régulières perl (et par extension : grep -P et preg_* de php).

Par défaut, un /.*/ ou toute autre expression sera « gourmand » : ça matche tant que ça peut encore matcher. Par exemple, /a*/ appliqué à la chaîne "aaa" va matcher "aaa", et non pas "".

Dans mon cas pratique, j’ai une balise <td id="identifier"> et j’en cherche le contenu. Donc si la regexp utilisée est /<td id="identifier">(.*)<\/td>/ alors je vais matcher ce qu’il y a entre mon td ouvrant, et le dernier td fermant.

La solution

La solution consiste à dire au moteur d’expression régulière de prendre le moins possible, et ça se code comme suit : /<td id="identifier">(.*?)<\/td>/.

Bibliographie : http://social.msdn.microsoft.com/Forums/en-US/regexp/thread/ab975ba5-31dd-4e6d-b72f-5cd6bf374b02 (et oui, parfois on trouve des choses utiles sur les forums de microsoft).

Je me suis posé la question cette semaine, alors maintenant que j’ai trouvé la réponse, je la partage.

J’utilise swfobject pour gérer mes flash. L’avantage, c’est qu’il n’y a pas à écrire tout le code « object » et « embed ».

  • Sous Windows, il suffit d’utiliser l’option « wmode = transparent ».
  • Ca m’a étonné, mais cette méthode marche sous konqueror.
  • Sous Firefox / Linux, il suffit de mettre une iframe sous le div à afficher au dessus, avec des z-index de plus en plus croissants. Voir cet article.