Un peu de javascript

Bonjour,
Il est important, parfois, de revenir à la programmation directe : dans le « coeur du code » (utilisez Zend, PDO…, c’est super mais bon l’assemblage au bout d’un moment…). Au cours d’un développement ou plutôt d’un patchage d’ICEberg, j’ai du surmonter le problème du document.getSelection(); en javascript qui ne fonctionne qu’avec les navigateurs Mozilliesque (Firefox, Netscape, Mozilla). document.getSelection(); n’est donc pas compatible avec IE. Je suis dans une application en PHP et j’ai besoin du document.getSelection(); pour transmettre via des variables une selection de texte éffectuée par l’internaute sur la page consultée pour l’injecter ensuite dans un formulaire. Si IE n’existait pas, nous pourrions nous contenter de :

location.href='formAK.php/user?action=add& description='+encodeURIComponent(document.getSelection())+';

Seulement voilà, il y a IE et document.getSelection(); renvoit une belle erreur javascript. Mais il y a une petite solution très simple qui permet de rendre cette action compatible quelque soit votre navigateur préféré (sous MacOS X, cela fonctionne aussi). Plutôt que de détecter le navigateur (son nom via : navigator.appName), il plus intéressant de détecter la méthode (ou l’objet) dont le fonctionement avec les navigateurs n’est pas possible (ou mal gérée). Ainsi, avec un système conditionnel classique et une nouvelle variable « methodeselection » :


if (document.getSelection) methodeselection = document.getSelection();
else if (document.selection) methodeselection = document.selection.createRange().text;
else return;

Préparé pour une page web, nous pouvons écrire :

function envoyer_une_selection_quelquepart() {
if (document.getSelection) sel = document.getSelection();
else if (document.selection) sel = document.selection.createRange().text;
else return;
location.href='http://www.monsite.fr/?action=ajouteramonforumulaire&
description='+encodeURIComponent(sel)+';
}

Bonne fin de semaine,
Stéphane.