begin process at 2012 05 28 07:30:58
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Trucs & Astuces

 > 20 ASTUCES POUR PROGRAMMEURS JAVASCRIPT AVANCÉS

20 ASTUCES POUR PROGRAMMEURS JAVASCRIPT AVANCÉS


 Information sur la source

Note :
7 / 10 - par 1 personne
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Trucs & Astuces Classé sous :astuces, avancés, IP, Youtube, géolocalisation Niveau :Initié Date de création :03/03/2011 Date de mise à jour :28/03/2011 22:46:17 Vu / téléchargé :4 715 / 525

Auteur : jdmcreator

Ecrire un message privé
Site perso
Commentaire sur cette source (30)
Ajouter un commentaire et/ou une note

 Description

Le monde du web évolue rapidement. Une des nombreuses critiques du Javascript et qu'il est très restrictif. Je suis contre. Voici donc 20 astuces des plus diverses : Évaluer une chaîne, connaître l'IP du visiteur, récupérer des informations de Youtube, compléter des liens...

Tout pour vous prouvez que bien utilisez, Javascript est formidable et nous réserve des merveilles. Dans certains cas, comme pour Youtube et récupérer l'ID, il faut chercher un code JSON généré par le site web. Cela reste tout de même du Javascript.

J'ai mis dans la page un sommaire généré automatiquement, pages de test générés automatiquement. Comme quoi, la page contenant les astuces... en est une aussi ;)

Source

  • Sommaire
  • #1 Évaluer une chaîne sans "eval()"
  • #2 Trouver un élément HTML selon sa position
  • #3 Supprimer toutes les balises SCRIPT
  • #4 Supprimer les sauts de lignes
  • #5 Récupérer tous les enfants d'un élément HTML
  • #6 Transformer du texte en HTML
  • #7 Afficher les miniatures des vidéos Youtube
  • #8 Compléter une URL lorsque son chemin d'accès est incomplet (local)
  • #9 Compléter une URL lorsque son chemin d'accès est incomplet (non-local)
  • #10 Insérer des expressions mathématiques LaTex dans une page.
  • #11 Remplacer un mot dans un texte sans utiliser d'expressions régulières
  • #12 Récupérer le outerHTML d'un élément HTML
  • #13 Récupérer le code HTML de la sélection
  • #14 Permettre un nombre illimité d'arguments dans une fonction
  • #15 Récupérer des informations sur la position géographique et l'IP du visiteur
  • #16 Récupérer les variables dans l'URL
  • #17 Récupérer l'information des vidéos de Youtube
  • #18 Connaître la valeur par défaut d'un champ de texte
  • #19 Créer un raccourci avec la touche CTRL
  • #20 Insérer du HTML à la position du curseur dans une zone éditable
Sommaire

#1 Évaluer une chaîne sans "eval()"
#2 Trouver un élément HTML selon sa position
#3 Supprimer toutes les balises SCRIPT
#4 Supprimer les sauts de lignes
#5 Récupérer tous les enfants d'un élément HTML
#6 Transformer du texte en HTML
#7 Afficher les miniatures des vidéos Youtube
#8 Compléter une URL lorsque son chemin d'accès est incomplet (local)
#9 Compléter une URL lorsque son chemin d'accès est incomplet (non-local)
#10 Insérer des expressions mathématiques LaTex dans une page.
#11 Remplacer un mot dans un texte sans utiliser d'expressions régulières
#12 Récupérer le outerHTML d'un élément HTML
#13 Récupérer le code HTML de la sélection
#14 Permettre un nombre illimité d'arguments dans une fonction
#15 Récupérer des informations sur la position géographique et l'IP du visiteur
#16 Récupérer les variables dans l'URL
#17 Récupérer l'information des vidéos de Youtube
#18 Connaître la valeur par défaut d'un champ de texte
#19 Créer un raccourci avec la touche CTRL
#20 Insérer du HTML à la position du curseur dans une zone éditable

 Conclusion

Je n'ai pas testé sur tous les navigateurs, mais techniquement cela devrait marché. Souvent, ces codes proviennent d'anciens que j'ai déjà fait.

16 des 20 astuces sont de moi, 3/20 de d'autres personnes que j'ai modifié et 1 d'une autre personne au complet. J'ai indiqués les sources. 2 exemples ne fonctionnent pas car la page de test est généré automatiquement et ne possède donc pas d'URL

J'ai mis initié car je n'ai pas mis beaucoup d'explication. N'hésitez pas à me demander de l'aide ou des explications ou à me rapporter des erreurs ;)

JDMCreator

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

03 mars 2011 02:55:38 :
mauvais ZIP
03 mars 2011 23:32:06 :
Compatibilité avec IE
28 mars 2011 22:46:18 :
Correction coquille et quelques erreurs de syntaxe

 Sources du même auteur

Source avec Zip JDMATH-MINI.JS : GÉNÉRATION D'EXPRESSION MATHÉMATIQUE
PARSER LES CARACTÈRES HTML D'UNE STRING
Source avec Zip TIMER : SETTIMEOUT & SETINTERVAL AMÉLIORÉS
RÉPÉTER UN VIDÉO YOUTUBE EN JAVASCRIPT À L'AIDE D'UN MARQUE-...
Source avec Zip PERMETTRE LA SÉLECTION DU TEXTE PAR L'UTILISATEUR

 Sources de la même categorie

PARSER LES CARACTÈRES HTML D'UNE STRING par jdmcreator
CONSTRUCTION D'UNE TABLE TRIABLE À PARTIR D'UN TABLEAU 2D par phm
Source avec Zip Source avec une capture SUBDIVISER LE RÉSULTAT D'UNE RECHERCHE EN PAGES par kimmp
Source avec Zip TIMER : SETTIMEOUT & SETINTERVAL AMÉLIORÉS par jdmcreator
Source avec Zip Source avec une capture ONGLETS ET CHANGEMENT INSTANTANÉ DE LA LANGUE par william voirol

 Sources en rapport avec celle ci

RÉPÉTER UN VIDÉO YOUTUBE EN JAVASCRIPT À L'AIDE D'UN MARQUE-... par jdmcreator
Source avec Zip Source avec une capture GEOLOCALISATEUR par AlexN
Source avec Zip VIDÉOS FLASH : L'AUTOPLAY FAIT RIEN QU'À M'EMBEDER par cornofulgur
ADRESSE IP VALIDE par tarzent

Commentaires et avis

Commentaire de 007Julien le 03/03/2011 23:51:49 7/10

Quelques éléments intéressants, mais les informations géographiques (#15) semblent concerner le serveur du fournisseur d'accès plus que le poste client et seul le pays (et encore quid des délocalisations ?) semble pouvoir être exploité.

La fonction GET en javascript (#16) permettant de récupérer les variables de l'url est un peu laborieuse lorsque deux splits (l'un sur les &, l'autre les =) sur window.location.search.substring(1) suffisent pour disposer de tous les éléments.

Sinon les valeurs par défaut (#18) des champs de texte (textarea) s'appliquent aussi aux autres champs de texte (inputs de type texte) ce qui permet d'utiliser ces champs pour décrire leur contenu et de reprendre cette description lors de la perte de focus avec un champ vierge.    

Enfin, (last but not least) l'instruction document.elementFromPoint(Number x,Number y) semble a peu près acceptée par les navigateurs les plus courants encore que des incertitudes subsistent sur la nature des coordonnées à utiliser (voir la page http://www.quirksmode.org/dom/w3c_cssom.html#documentview).




Commentaire de jdmcreator le 03/03/2011 23:57:12

Bonjour,

Dans le premier cas, la ville chez moi fonctionne, mais cela dépend du pays. Pour certains, il n'est pas possible de le récupérer. Moi, j'habite au Canada et cela fonctionne, mais peut-être que ce que tu dis est vrai. Mais l'IP, lui, est exploitable.

#16 : C'est qu'il existe plusieurs exceptions, c'est la fonction que j'utilise mais si vous en avez une autre équivalente, je peux la modifier

#18 : C'est vrai

Dans le dernier cas : C'est pourquoi j'ai mentionné d'aller voir la documentation afin de voir quels propriétés utilisés pour recueillir l'élément, selon le navigateur

Commentaire de 007Julien le 04/03/2011 00:04:43

#16 Ce serait bien de connaître les exceptions car depuis l'Île-de-France cela me localise en Normandie !  

Commentaire de jdmcreator le 04/03/2011 00:06:02

Le #16, c'est sur la fonction GET ;)

Relis mon commentaire :P

Commentaire de 007Julien le 04/03/2011 11:40:18

Effectivement, il était tard hier soir...
Pour le get en javascript imitons le php jusqu'au tableau associatif, s'il existe !
<script type="text/javascript">
var jsc_get=new function(){var i,t=window.location.search.substring(1).split(/&/g),l=t.length,u,v={},w=0;
  for (i=0;i<l;i++) {u=t[i].split(/=/);v[u[0]]=u[1];w=1}
  return w?v:null;
}
// Avec un vrai tableau associatif
c='';for (i in jsc_get) c+=' '+i+':'+jsc_get[i];alert(c);
if (jsc_get && jsc_get['truc']) alert(jsc_get['truc']);
</script>

Commentaire de jdmcreator le 04/03/2011 19:15:24

Bonjour,

Ta fonction est très intéressante, il ne resterait plus qu'à la compresser. Seulement, elle n'est pas identique à $GET() car cette dernière possède deux fonctions :

Pas d'arguments : Retourne un tableau de toutes les valeurs
Argument : Retourne la valeur recherchée

Commentaire de 007Julien le 04/03/2011 23:33:46

Indépendamment du location.href qui demanderait, semble-t-il, un document devant, la fonction initialement proposée retourne un grand vide à défaut d'argument... Seule une chaîne vide permet d'obtenir non pas un tableau mais une chaine des valeurs séparées par des virgules.
  
S'il convenait de répondre aux objectifs maintenant précisés, la fonction suivante paraîtrait plus adaptée tout en restant plus concise :  
<script type="text/javascript">
function j_g(n){var i,t=window.location.search.substring(1).split(/&/g),l=t.length,u,v=[];
  for (i=0;i<l;i++) {u=t[i].split(/=/);v[v.length]=u[1];if (n==u[0]) return u[1];}
  return v;
}
alert(j_g())
alert(j_g('truc'))
</script>
Maintenant si la compression consiste à réduire les noms des variables, je pense avoir convenablement préparé le terrain...
Cordialement.

Commentaire de Jormund le 07/03/2011 11:45:18

Bonjour,

Il y a deux coquilles dans ta page index.html:
Le code javascript affiché pour le #3 est celui du #4.
La description du #20 est celle du #19.

Ensuite j'ai une questions :
Pourquoi passer par une input pour les #3 et #4 ?
Je ne comprends pas la différence avec un simple return tn.replace(/[\n]+/gi,"");

Une remarque sur le #8: pour que le #8 fonctionne il faut utiliser la propriété href (une balise a n'a pas d'attribut "src").

Et enfin, pour contribuer à la discution sur la récupération des paramètres get, j'utilise personnellement un code similaire à 007Julien pour obtenir un tableau associatif à partir d'une url:
function getParamsFromUrl (url)
{
var params = {};
var index = url.indexOf('?');
if(index > -1)
{
url = url.split('?')[1];
url = url.split('#')[0];
url = url.split('&');
var sTmp = "";
for(var i in url)
{
sTmp = url[i];
sTmp = sTmp.split('=');
params[sTmp[0]] = sTmp[1];
}
}
return params;
}

Commentaire de Jormund le 07/03/2011 12:00:13

PS: Ton #1 ne prend en compte qu'une utilisation de eval qui est d'appeller une fonction.
J'utilise personnellement pour effectuer cela:
function callSomething(code)
{
var tempFunction = new Function(code);
return tempFunction();
}
Par contre je ne sais pas si il est compatible tous navigateurs, alors que c'est probablement le cas de ton code.

J'évoquais d'autres utilisation de eval qui ne fonctionnent pas avec ton code, il y a par exemple:
var a = eval("[1,2,3]");
ou encore
var a = eval("{test:'toto'}")

J'avoue aussi ne pas bien voir l'intérêt de ta fonction par rapport à:
function evalWithCatch(code)
{
try
{
return eval(code);
}
catch(e)
{
return undefined;
}
}


Commentaire de 007Julien le 07/03/2011 13:17:11

En toute rigueur il conviendrait encore, à propos de la fonction GET, de décoder les valeurs en utilisant un decodeURIComponent();
Ces valeurs doivent, en effet, être supposées avoir subi le traitement inverse lors de l'écriture de l'adresse.  

Commentaire de jdmcreator le 08/03/2011 02:50:49

@007Julien :

Ton code compressé manuellement puis beautifier (http://jsbeautifier.org/) devrait donner environ ceci :

function j_g(n) {
    var i, t = window.location.search.substring(1).split(/&/g),
        u, v = [];
    for (i in t) {
        u = t[i].split(/=/);
        v.push(u[1]);
        if (n == u[0]) return u[1];
    }
    return v;
}

Reste à savoir si cela fonctionne avec http://example.com?test=1&test2=2&test3&test4=4
Pourrais-je récupérer test3 ;) ?

@Jormund : En effet, il y a bel et bien deux coquilles et une erreur, mea culpa, je suis en train de corriger

@2e commentaire de 007Julien : En fait au départ, c'était de trouver différentes manières d'émuler "eval()" pour trouver la plus rapide, eval() me semblant un peu lente, je cherche encore, il me reste plusieurs tests à faire, mais j'ai décidé de la mettre comme première astuce pour voir si d'autres personnes, comme toi, avait des solutions différentes à me proposer ;)

@3e commentaire de 007Julien : c'est un fait ;)

Commentaire de Jormund le 08/03/2011 09:38:02

Je ne pensais pas faire de remarque au début car mon but n'est pas de donner un cours de programmation, mais je ne comprend pas ton but quand tu rends le code illisible, il n'est pas plus performant sous cette forme, il pèse juste quelques octets de moins (ce qui avec les bandes passantes d'aujourd'hui et les caches est assez négligeable dans la plupart des situations). A la rigueur utiliser un compacteur de code juste avant de mettre en ligne un js, pour optimiser la bande passante d'un site réel, pourquoi pas. Mais ici c'est surtout une perte de temps.

Pour ce qui est de ta fonction j_g avec "http://example.com?test=1&test2=2&test3&test4=4" et test3: u[1] n'existe pas, la fonction renverra null.
Une remarque sur cette fonction: si la variable get recherchée n'existe pas, ça va aller au bout de la boucle for et retourner le tableau des variables, je ne suis pas sûr que ça soit forcément le comportement que tu attendais.

Commentaire de 007Julien le 08/03/2011 09:50:33

Même s'il est vrai que la fonction push (introduite plus récemment en javascript donc a priori moins bien supportée) est plus élégante que le v[v.length]=u[1] et supprime la variable l, je ne vois pas l'intérêt de «beautifier» le code proposé sauf s'il s'agissait de l'afficher au dessus de mon lit !

Pour son efficacité en javascript, j'aurais plutôt tendance à compresser ma proposition (JSMin de Douglas Crockford http://jscompress.com/ ou Dean Edwards compressor http://javascriptcompressor.com/). Celle-ci passerait alors de 188 à 175 octets (gain de 7%) plutôt que de retenir celle proposée de 229 octets (perte de 23%).

Maintenant le test consistant à récupérer une variable non définie est facile à faire il donne sans surprise une valeur non renseignée dans le tableau et une valeur undefined sinon.  

Commentaire de 007Julien le 08/03/2011 10:27:09

Effectivement, il y a un écueil lorsque l'on cherche une clef inexistante dans le GET. Il convient alors de remplacer la dernière ligne par un return !n?'':v

Commentaire de Jormund le 08/03/2011 11:04:43

Je pense que tu as inversé ton test, il faut retourner v si il n'y a pas de paramètre, donc
return !n?v:'';

Commentaire de 007Julien le 08/03/2011 12:07:46

Oui, Merci. Quels progrès accomplis ...

Commentaire de jdmcreator le 09/03/2011 00:41:10

@007Julien : Beautifier le code sert entre autre à le comprendre, un truc du genre :

function j_g(n){var i,t=window.location.search.substring(1).split(/&/g),u,v=[];for(i in t){u=t[i].split(/=/);v.push(u[1]);if(n==u[0])return u[1]}return v}

est assez difficile à lire ;) Évidemment, si tu veux le compresser pour le mettre sur ton site, aucun problème que tu le compresses, c'est plus rapide à charger. Si j'ai placer le code beautifier, il s'agissait plutôt pour qu'il puisse bien être affiché lorsque je le placerai dans le fichier d'astuces.

@Jordmund : Si c'est à moi que tu parles, alors pour moi le code n'est pas du tout illisible, je n'utilise que des moyens dits "de base". Oui, j'ai en effet supprimé quelques octets, sur un petit code comme celui-ci ce n'est pas très grave, sur un plus gros code comme JQuery.js , crois-moi que ces petits octets ici à gauche et à droite, finissent par faire beaucoup. Pourquoi nous empêcher de réduire notre code, ça n'a jamais été mauvais ;) ?

Commentaire de 007Julien le 09/03/2011 02:09:30


Oui, bien entendu un code peut avoir des qualités pédagogiques...

Mais, l'objet premier d'un code c'est l'efficacité. C'est en toute hypothèse ce que j'ai recherché en produisant, à ma connaissance un «compte est bon» inédit en javascript (voir le code http://www.javascriptfr.com/codes/COMPTE-EST-BON_52331.aspx) ou encore un «Puissance 4» relativement performant (voir http://www.javascriptfr.com/codes/PUISSANCE_52840.aspx).

Alors oui, c'est difficile à lire mais un beau site cela se mérite et nécessite parfois quelques efforts vous dirons les architectes, les alpinistes et bientôt les maîtres-toiles...

N'oublions donc pas qu'un code n'est pas destiné à être affiché. Que ceux qui en douteraient encore veuillent bien consulter le source de Google.
  

Commentaire de jdmcreator le 09/03/2011 02:15:53

Je pense que vous ne comprenez pas mon point :

Si j'ai beautifier le code, c'est pour que n'importe qui puisse le lire, n'oubliez que CodeS-SourceS est à la base pédagogique et le résultat ne compte pas plus que le code. Si vous voulez placer ce code sur votre site, compressez-le, c'est bien mieux ainsi. Mais le but de ma source est de présenter différentes astuces où le code est plus important que le résultat. Dans les boîtes destinés à contenir le code Source des astuces dans "index.html", tous les codes sont plus ou moins beautifier pour qu'on puisse les lire. C'est ainsi sur toutes les documentations ;)

Mais nous nous éloignons un peu du sujet et entrons dans un sujet peu important ;)

Commentaire de Jormund le 09/03/2011 09:31:41

Mon problème n'était pas que tu ne compressais pas le code, c'était le contraire. Tu réduis le nom des variables à une seule lettre, tu écris plusieurs instructions sur une même ligne, je me disais que c'était pour raccourcir la longueur totale du code, et le seul intérêt que je vois à ça c'est gagner des octets. Mais tout ça, tu peux le faire plutôt juste avant de mettre ton code en ligne sur un site.
Dans ton message du 08/03/2011 à 02:50:49, tu as "compressé manuellement et beautifier".
Si le code n'est déjà plus facile à lire, ça ne sert à rien de le "beautifier"...
Sans même parler de pédagogie, un code avec des noms de variables explicites est plus facile à maintenir.

Commentaire de 007Julien le 13/03/2011 13:27:55


Merci. J'aurais au moins rencontré «beautifier», après bêtifier et béatifier (nous n'en sommes pas encore là !).

Je reste néanmoins convaincu que la meilleure expression du get, en javascript, consiste à créer un objet avec le code suivant (à insérer par exemple dans un script outils.js).

Get=new function(){var i,t=window.location.search.substring(1).split(/&/g),l=t.length,u;for(i=0;i<l;i++) {u=t[i].split(/=/);this[u[0]]=decodeURIComponent(u[1])}}

Ce script d'encombrement réduit met à disposition un objet permettant d'envisager le passage d'un nombre, il est vrai limité, de paramètres entre les pages d'un site sans recours au PHP.

Commentaire de jdmcreator le 13/03/2011 20:14:26

Ce code me semble très bon. Je mettrai à jour la source en corrigeant les coquilles et en remplaçant le code de $Get par celui-ci.

PS :

Get=function(){var i,t=window.location.search.substring(1).split(/&/g),;for(i in t) {u=t[i].split(/=/);u[0]=decodeURIComponent(u[1])}}

le "new" avant function est inutile, la variable "l" aussi, car utilisé une seule fois, et de toute façon "for(i=0;i<l;i++)" peut être remplacer par "for(i in t)"

Aussi, pourquoi "this[u[0]]" et non pas juste u[0] ?

Commentaire de 007Julien le 13/03/2011 21:09:16


Le new et le this sont indispensables pour créer un objet (voir par exemple http://jacques-guizol.developpez.com/javascript/Objets/Objets.php), ce qui avec l'adresse  http://mon.site.com/index.html?page=7 (le script fonctionne sur un serveur) permet les deux syntaxes suivantes : Get["page"] ou encore Get.page pour récupérer ce paramètre (page devient une propriété de l'objet Get grâce au this).

Il est alors possible d'adapter le contenu à la page à cet appel...

Commentaire de Kimjoa le 13/03/2011 23:15:34

Salut jdmcreator, il y a pas mal de chose que je comprends pas.

Déjà comme dit plus haut la méthode eval ne fait rien d'autre que un block try{}catch(){}.
Je vois pas l'utilité de #5 par rapport à un getElementsByTagName('*')
Le #11 aussi... Les expressions régulière c'est quand même super pratique, pourquoi vouloir s'en passer?
La fonction GET est partiellement fausse. Enfin en php si il y a des paramètre en doublon, alors ça devient un tableau. De plus il faut utiliser la fonction decodeURIComponent.J'ai amélioré une fonction du web, voilà ce que ça donne
(function(){
    var reg = /[?&]+([^=&]+)=?([^&]*)/gi,
        href = window.location.href;

    getUrlVars = function(){
        var map = {};
        href.replace(reg, function(match, key, value) {
            key = decodeURIComponent(key);
            value = value ? decodeURIComponent(value) : true;
            map[key] ? map[key] instanceof Array ? map[key].push(value) : map[key] = [map[key], value] :  map[key] = value;
        });
        return map;
    }

    getUrlVar = function(param){
var reg = new RegExp("&"+param+"=([^&]*)", "gi"),
            res;
        href.replace(reg, function(match, value) {
            value = value ? decodeURIComponent(value) : true;
            res ? res instanceof Array ? res.push(value) : res = [res, value] :  res = value;
        });
        return res;
    }
})();
Sinon il y a pas mal de truc intéressante, notamment l'exploitation du DOM pour parser des string .... c'est plutôt ingénieux !  

ps : indente ton code ! ça pique les yeux sans ;)

Commentaire de jdmcreator le 14/03/2011 01:51:42

@Kimjoa : Premièrement, le #5 permet de récupérer tous les enfants, à partir de n'importe quel élément et peut importe le type (donc aussi texte). element.document.getElementsByTagName n'est pas supporté par tous les navigateurs et getElementsByTagName("*") retourne tous les éléments HTML et non pas tous les éléments enfants ;)

#11 : C'est principalement pour faire des remplacements à la volée, il est très complexe de générer un RegExp en fonction de l'utilisateur. Petit exemple : dans l'exemple du code, si on met dans le champ TEXTE "a.b", si on génère un RegExp à la volée, cela donnera : new RegExp("a.b","gi") . Seulement, le . en RegExp signifie n'importe quel caractère. Même chose pour les symboles []$^\ etc...

Pour ta fonction du $GET, ça semble très bon, mais je ne savais pas que "instanceof" fonctionait avec tous les navigateurs. Maintenant que je sais, je vais l'utiliser ;)

Pour l'indentation, c'est évident, mais j'avoue que se sera très long, surtout que j'ai déjà plusieurs modifications à faire.

Merci de ton commentaire ;)

Commentaire de 007Julien le 15/03/2011 14:28:16

Salut l'artiste !

Effectivement, le tableau associatif que constitue le $_GET en PHP présente le défaut majeur de «tuer» les valeurs multiples pourtant transmises dans la chaîne d'adresse par l'envoi du formulaire et seul l'artifice que constitue l'utilisation d'un nom suivi de deux crochets droits [] (en forme d'affectation à une variable tableau) permet de surmonter cette lacune.

La fonction getUrlVar proposée ne reprend pas cet artifice mais concatène les valeurs multiples dans une liste d'éléments séparés par des virgules (ce qui pourrait présenter d'autres inconvénients - l'introduction du séparateur en argument mettrait en garde l'utilisateur).

NB : Un oubli malencontreux dans l'expression régulière interdit la restitution du premier paramètre par la seconde fonction. Celle-ci semble d'ailleurs inutile, la première pouvant prendre, sous forme d'objet, la forme d'un tableau associatif rendant les mêmes services.

Enfin, ayant sauvegardé le script proposé dans un répertoire astuces&rechrerches, l'expérience montre que l'emploi de window.location.search paraît préférable à celui de window.location.href (à cet égard le décodeURIComponent sur les noms des paramètres constitue effectivement une précaution utile bien que non indispensable).  

Merci en toute hypothèse pour cette analyse approfondie et pour ces exemples d'utilisation de fonctions de «callback» avec la méthode replace.


Commentaire de Kimjoa le 16/03/2011 14:22:58

Salut  007Julien! merci pour ces précisions. Tu aurais pu nous fournir une fonction toute propre ;).
Enfin bon je suis sur que jdmcreator va s'en occuper et mettre à jours ces astuces!
a+

Commentaire de jdmcreator le 24/03/2011 02:05:36

Bonjour,

Pardonnez cette absence, maladie puis reprises de travaux scolaires m'a forcé à m'éloigner de ce site ;) En fait, j'ai mal suivi vos discussions, et je suis un peu perdu ! J'approuve avec Kimjoa :  " Tu aurais pu nous fournir une fonction toute propre ;)" ;D

Commentaire de 007Julien le 24/03/2011 10:13:45

Même si, comme pour la tour Eiffel, le beau n'est pas dans l'utilité, une fonction «toute propre» sera probablement inadaptée pour résoudre un problème particulier. L'essentiel, c'est de retenir les idées !

Commentaire de jdmcreator le 28/03/2011 22:47:36

Voilà j'ai mis à jour au sujet des erreurs/coquilles. Pour le $GET, je n'ai pas encore changé j'analyse encore vos réponses ;)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

récupérer l'adresse ip [ par Mathusalem ] bonjourje voudrais savoir comment je peux récupérer l'adresse ip du client en JSJe sais le faire en vbscript, mais bon, je préfère de loin JS.voilà si Ip , Dns et Mail anonymes [ par vbnul ] SalutJe voudrais afficher sur mon site l'ip et la dns du visiteur, comment faire ???g essaye documen.write(ip) mais sa marche po.J'aimerais aussi mett Ip de visiteur [ par StormX ] Bonjour,es que quelqu'un aurrais un script pour afficher l'ip des mec qui se connect sur mon site ??Merci @@+++ probleme IP [ par morgandetoi06 ] quelqu un peut me dire pourquoi var IP = '&lt;!--#echo var="REMOTE_ADDR"--&gt;';ne marche pas chez moi ?par exemple si je me sert de cette source: adresse ip [ par tigris ] Allô tout le monde, je suis nouveau sur ce site, alors je me démêle un peu sur son utilisation,j'ai fais des recherches sur mon sujet mais je ne trouv récupérer une variable sans utiliser de cookie [ par scoder ] Bonjour,j'ai trouvé parmis les sources une fonction js permettant de lancer une application. Mon problème est que je dois rajouter une ip dans la lign ip [ par activition1 ] Bonjour je voudrais savoir si il est possible d'achicher mon adresse ip (pas celle des visiteur) en temps réelPS : en javascript, pas en php mon hebe Trouver Ip, acces particulier en fct d'ip [ par blinkylucie ] [:i] Bonjour à tous!Je cherche un script javascript, css ou voir php pour detecter une adresse ip. Ensuite en fonction de l'adresse ip la page devra s Récupérer IP d'une personne via un Email [ par JBdu14 ] Voila je découvre votre site qui est tres bien r"aliser mais apres maintes experience je cherche à créer un Email qui lors de sa lecture me donnerais blocker ip ou redirection [ par blinkylucie ] Bonjour!!J'ai déjà laissée un message précédemment pour que quelqu'un m'aide à bloquer ou rediriger une adresse ip en particulier.J'ai trouvé un code


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,530 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales