2010-10-30 16:50

Pour la gallerie d’images php Bizou, j’ai cherché différentes manière de précharger l’image suivante pour le mode “visualisation” (exemple).

Sous Firefox, c’est très simple. Il suffit d’utiliser la balise suivante pour que le navigateur précharge les contenus indiqués.
Les contenus sont préchargés en arrière-plan une fois que la page courante est chargée intégralement.

 [html]
<link rel="prefetch" href="/images/nextimage.jpg" />

Sauf que pour le moment seul Firefox supporte cette fonctionnalité.
Note : un ticket est ouvert sur le sujet pour le projet Chromium.

Pour les autres navigateurs que Firefox, il faut utiliser du Javascript déclenché à l’événement window.onload :

 [javascript]
<script type="text/javascript">
window.onload = function() {
    // pour les images
    var im = new Image();
    im.src = '/images/nextimage.jpg';
    // et pour les autres contenus
    var req = new XMLHttpRequest();
    req.open('GET', 'nextpage.php', false);
    req.send(null);
};
</script>

Attention aux en-têtes HTTP de cache envoyés par le serveur vers le navigateur.
Pour un préchargement efficace de page PHP, il faudra que votre script envoie un en-tête Expires.

header('Expires: '.gmdate('D, d M Y H:i:s \G\M\T', time() + 3600));

Enfin, pour une détection simple du navigateur depuis le script PHP :

<?php if (strpos($_SERVER['HTTP_USER_AGENT'], 'Firefox') !== false) { ?>
<link rel="prefetch" href="nextpage.php" />

<?php } else { ?>
<script type="text/javascript">
window.onload = function() {
    var req = new XMLHttpRequest();
    req.open('GET', 'nextpage.php', false);
    req.send(null);
};
</script>
<?php } ?>

Liens :

2010-10-30 16:50 · Tags: , , , , ,
2010-04-14 22:10

Les bookmarklets sont des liens contenant du code Javascript. L’intérêt est de les enregistrer dans les favoris, afin d’effectuer divers traitements sur la page courante affichée par votre navigateur.

Il est aussi possible de faire des bookmarklets qui vous authentifient automatiquement sur un site utilisant un formulaire de connexion. Ceci en stockant votre login et mot de passe dans le code javascript d’un bookmarklet.

Exemble de bookmarklet de connexion

Le code du bookmarklet décortiqué sur plusieurs lignes :

javascript:
document.body.appendChild(document.createElement('div')).innerHTML='
<form name="BletForm" method="POST action="http://www.woozweb.com/loginctrl">
<input type="hidden" name="login" value="MONLOGIN" />
<input type="hidden" name="pass" value="MONPASS" />
</form>';
document.forms['BletForm'].submit();

Ce code permet de générer une requête HTTP POST à deux paramètres, depuis vos favoris. Écrire ce genre de code est à la portée des développeurs Web, mais pas de madame michu.

J’ai donc écrit un bookmarklet permettant de générer facilement des bookmarklets de formulaires de connexion.

C’est très simple :

  1. Glissez le bookmarklet de génération dans vos marques-pages :
    générateur
  2. Allez sur une page contenant un formulaire de connexion.
  3. Cliquez sur le générateur dans vos marques-pages : un message apparaît à côté du formulaire.
  4. Remplissez les champs du formulaire de connexion.
  5. Cliquez sur le lien de génération : le bookmarklet apparaît.
  6. Glissez le bookmarklet généré dans vos marques-pages.
  7. Enfin, testez votre bookmarklet de connexion automatique !

Le générateur fonctionne même avec l’écran d’authentification de mon compte bancaire. Bien entendu, je rappelle que vos informations de connexion sont stockées en clair dans le marque-page, ce qui n’est pas très sécuritaire…

Notes :

  • Testé uniquement sous Firefox. Reste à le rendre compatible avec Safari et IE.
  • Trouver un moyen d’utiliser le stockage de mot de passe de Firefox pour récupérer le mot de passe.
  • Si le bookmarklet ne fonctionne pas chez vous, n’hésitez pas à me laisser un petit commentaire.

Liens :

2010-04-14 22:10 · Tags: , ,