|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre à l'essai
![]() Inscription : novembre 2006 Messages : 121 ![]() |
Bonjour,
Il y a une syntaxe javascript que j'ai un peu de mal à comprendre, et qu'on retrouve par exemple dans le code de suivi asynchrone de Google Analytics : Code :
Pourquoi dans ce cas, ne pas avoir écrit simplement : Code :
Merci |
||||
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : janvier 2011 Messages : 2 930 ![]() |
Bonsoir,
j'ai retrouvé le lien sur Les fonctions anonymes, sur ce site même. Tout l'article, depuis le début, devrait répondre à toutes tes questions |
|
|
00
|
|
|
#3 |
|
Expert Confirmé Sénior
![]() Romain VALERIPOOête Inscription : avril 2008 Messages : 2 572 ![]() |
C'est vraisemblablement pour limiter la portée des variables utilisées et éviter d'éventuelles "collisions" avec les autres scripts de la page ^^
__________________
...pour les linguistes et les curieux >>> générateur de phrases aléatoires __________________ |
|
|
00
|
|
|
#4 | |
|
Membre Expert
![]() Boris Dessysans emploi Inscription : décembre 2010 Messages : 847 ![]() |
Citation:
Perso je commence tjs mes fichiers js par " (function(){" et les fini tjs par "})()" |
|
|
|
00
|
|
|
#5 | |
|
Expert Confirmé Sénior
![]() Romain VALERIPOOête Inscription : avril 2008 Messages : 2 572 ![]() |
Citation:
__________________
...pour les linguistes et les curieux >>> générateur de phrases aléatoires __________________ |
|
|
|
00
|
|
|
#6 |
![]() ![]() ![]() Didier MouronvalDéveloppeur Web Inscription : juin 2008 Messages : 13 805 ![]() |
Les choses qui vont sans dire allant toujours mieux en les disant, autant préciser que cette méthode implique de placer ses scripts en fin de page, juste avant la balise </body> et non pas dans le head
__________________
Pas de question technique par MP ! Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi ! Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi ! Mes formations video2brain : La formation complète sur JavaScript • JavaScript et le DOM par la pratique • PHP 5 et MySQL : les fondamentaux Mon livre sur jQuery
|
|
00
|
|
|
#7 | |||
![]() ![]() Inscription : janvier 2011 Messages : 2 930 ![]() |
Citation:
Code :
|
|||
|
|
00
|
|
|
#8 | |
|
Membre à l'essai
![]() Inscription : novembre 2006 Messages : 121 ![]() |
Merci pour vos réposnes.
Citation:
Soit le code est indépendant du DOM, et on l'exécute le plus tôt possible (déclaration de fonction, de tableaux, d'objets, initialisations diverses...), soit on a besoin du DOM et dans ce cas en encapsule le code dans une fonction genre jQuery(document).ready(), non ? |
|
|
|
00
|
|
|
#9 | |
|
Membre Expert
![]() Boris Dessysans emploi Inscription : décembre 2010 Messages : 847 ![]() |
Citation:
Pour aller plus loin dans cette encapsulation de code. J'avais même penser à un moment de sauver les fonctions natives dans ma(mes) capsules et de supprimer leurs accès une fois toutes mes capsules définies. Cela bloquerait toutes tentatives d'attaques JS , qui avouons-le, sont quand même frequentes. Un peu dans ce genre-ci. ( bien que je ne l'ai jamais mis en œuvre ) : http://pastebin.com/bAekPv6a |
|
|
|
00
|
|
|
#10 | |
|
Membre Expert
![]() Tlouye Ci Inscription : mars 2004 Messages : 1 450 ![]() |
Citation:
|
|
|
|
00
|
|
|
#11 | |
|
Membre Expert
![]() Boris Dessysans emploi Inscription : décembre 2010 Messages : 847 ![]() |
Citation:
|
|
|
|
00
|
|
|
#12 |
|
Membre Expert
![]() Boris Dessysans emploi Inscription : décembre 2010 Messages : 847 ![]() |
UP:
Voila, une version d'usage hyper facile de ma protection totale de JS : http://pastebin.com/eUVaSu4V (ce n'est qu'un exemple, il n'y a encore que alert qui est vraiment protégé.) mais l'usage est vraiment ultra simple : inclure un fichier secure_0 qui crée simplement un objet : Code js :
var secure = {s:"var alert = window.alert, document_getElementById = document.getElementById, d = {}; d.getElementById = function(){var r = document_getElementById.apply(document,arguments);return r;};",u:function(){},f:function(){ window.alert = this.u; document.getElementById = this.u;}}; encapsuler tous ses autres fichiers JS en les commençant par : et en les terminant par : une fois tous les JS encapsulés, finir par le fichier secure_1 qui appelle simplement la fonction de suppression : Et pour moi, si vous incluez tout ça dans le header, la protection est vraiment top. Bon, comme le dit Loceka, ça ne protège pas des script utilisateur (par exemple une fonction JS qui fixe une limite de char dans un textarea, l'utilisateur peut le bloquer, mais ce genre de chose doit de toute façon être vérifié du coté serveur et ne pourra jamais être empêché du coté client car le client peut envoyer les données qu'il veut au serveur sans même utiliser un navigateur.) Cette technique protégerait contre les "vraies" attaques JS du genre celles qui s’exécute chez un visiteur contre son gré pour lui voler ses cookies par exemple. (soit en passant par l'url : javascript:alert(document.cookie);, soit avec une injection via une page : par exemple un profil). Perso, je trouve que ça a du potentiel énorme et que je devrais le développer et le publier. edit: version online (vous ne pouvez pas faire de "alert" ni de "document.getElementById" mais la page a toujours accès a ces fonctions via des variables locales encapsulés.) http://ulb.comli.com/secure.html edit2: évidement faut faire gaffe, car comme l'auront remarqué ceux qui utilise IE (haha^^) après le document.onload, IE execute encore de son plein gré la fonction "onresize" qui elle même(lors de son premier appel. Il ne faut pas chercher à comprendre IE, ça me ferait trop peur) appelle "document.getElementById". (qu'on a supprimé) et donc IE est pas content content ! edit:3 faudra jusque que je prévois une fonction supplémentaire de chargement + encapsulation dynamique des script. autrement ils n'auront pas accès aux fonctions. Cette fonction qui ne pourra évidement être appelée qu'à partir d'une capsule existante pour garantir la sécurité. |
|
|
10
|
|
|
#13 | |
|
Membre Expert
![]() Tlouye Ci Inscription : mars 2004 Messages : 1 450 ![]() |
Citation:
Au pire il suffit de réécrire la fonction onresize pour qu'elle ne fasse rien. ^_^ |
|
|
|
00
|
|
|
#14 |
|
Membre Expert
![]() Boris Dessysans emploi Inscription : décembre 2010 Messages : 847 ![]() |
Non. Y'a juste un averto dans la console quand je met "document.getElementById = null" disant que cette fonction n'existe pas.mais pas de problème quand je remplace par "document.getElementById = function(){};" mais je me dis que ça pourrait poser problème pour d'autres méthodes si IE se met à exécuter du js (redéfinissable) de son plein gré.
|
|
|
00
|
|
|
#15 |
|
Expert Confirmé Sénior
![]() Romain VALERIPOOête Inscription : avril 2008 Messages : 2 572 ![]() |
Allez les gars un petit effort, faites-nous un nouveau browser, vous êtes plus très loin
__________________
...pour les linguistes et les curieux >>> générateur de phrases aléatoires __________________ |
|
|
00
|
|
|
#16 | |||
|
Membre Expert
![]() Boris Dessysans emploi Inscription : décembre 2010 Messages : 847 ![]() |
Citation:
(pour l'instant je n'ai jamais vu un eval indispensable dans un code, les 2 ici servent juste à éviter de la duplication de code et donc à faciliter l'écriture et l'appel de mes fonctions.) et des Code js :
function(){return function(){return function(){... }}}; le premier servant à sauvergarder des variables qui n'existeront plus lors de l'execution du second.(appelé une fois au début) le second servant à recréer une nouvelle fonction différente à chaque appel. (appelé plusieurs fois en fin) et sinon en remontant les "caller" j'ai identifié les fonctions que IE execute après l'initialisation de la page. (après même l'éxecution de notre code du window.onload). ![]() appelée elle-même par : ![]() appelée elle-même par : ![]() arg.... javascript me rend complètement cinglé ! ![]() Code html :
|
|||
|
|
00
|
|
|
#17 |
|
Expert Confirmé Sénior
![]() Romain VALERIPOOête Inscription : avril 2008 Messages : 2 572 ![]() |
Ce soir chez Boris c'est..... soirée disco !
__________________
...pour les linguistes et les curieux >>> générateur de phrases aléatoires __________________ |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com