begin process at 2012 02 06 01:26:30
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > QUERYSELECTORALL, SELECTEUR CSS3

QUERYSELECTORALL, SELECTEUR CSS3


 Information sur la source

Note :
Aucune note
Catégorie :Divers Classé sous :querySelectorAll, css3, sélécteur, querySelector, ID Niveau :Expert Date de création :11/05/2009 Date de mise à jour :21/10/2009 19:18:20 Vu / téléchargé :3 869 / 175

Auteur : Kimjoa

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

 Description

Cliquez pour voir la capture en taille normale
sélecteur css 3, cross-browser.

Pour ceux qui ne savent pas à quoi sert ce script , celui-ci sélectionne des éléments HTML définit par le sélecteur css3 -> voir http://www.w3.org/Style/css3-selectors-updates/WD- css3-selectors-20010126.fr.html

IDQuery est le sélécteur le plus rapide et le plus léger jamais créer, il à besoin d'être beaucoup testé, mais je peux pas tout seule... hésitez pas à l'utiliser... contrairement au grosse pointure telle que jquery, je n'ai pas la possibilité de facilement le faire connaitre ... je compte sur vous donc !

3 fonctions dispo:
   -ID.select
   -ID.selectParents
   -ID.match

vous devrais pas avoir tros de mal a changer ou supprimer l'espace de nom.

pour toute les fonctions de séléctions , on peux passer un tableau d'élément , ce qui permet d'enchainer les sélécteurs, par exemple :

var r1 = ID.select('div span');//traitement
var r2 = ID.select('a[target=menu]', r1 )//traitement

la sélections des parents ne prend en charge que le sélecteurs css2, sans les pseudo sélecteurs commençant par ':'

la fonction match renvoie true, si l'élément passé correspond à un sélecteurs, le 3ême arguments est optionnelle, c'est un élément ascendant qui doit pouvoir retourné l'élément à partir du sélecteur. (par défaut document.documentElement)

Toutes ses fonctions fonctionne par le principe de la compilation, en créant une fonction javascript , évalué par la suite, à partir de la règle css fournit. Ces fonctions sont ensuite stocké dans un système de cache. La séléction ne stock pas le résultat dans une cache , pour ne pas consommer tros de mémoire, de plus une sélection est souvent unique. Le testeur (ID.match) enregistre dans sa cache le résultat du test , contrairement à la sélection, car on n'enregistre que des booleans, de plus le test d'un élément peux être exécuté plusieurs fois, je pense notamment à la délégation d'évènement...  

Bientôt une version, on l'on pourra gérer de A à Z la cache, pas le temps :(

volà, voilà, ce script est là tout d'abord pour rendre compatible la fonction querySelectorAl à tout les navigateurs, il pourra aussi servir pour votre librairie perso ...

bye++



 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

11 mai 2009 20:44:38 :
correction partiel :) des fautes d'orthographe
11 mai 2009 20:49:37 :
...
27 juillet 2009 01:22:49 :
refonte complète du code
27 juillet 2009 06:33:35 :
grosse relativisation des performances, à cause d'un oublie de la gestion de la cache dans le bench :(
30 juillet 2009 02:25:19 :
5 à 10 % de performance en plus !!
21 août 2009 18:33:58 :
modification de la gestion de la cache , pour ne garder que les fonctions créer.
21 août 2009 18:35:17 :
...
21 octobre 2009 18:31:43 :
...
21 octobre 2009 19:18:16 :
...
21 octobre 2009 19:18:20 :
...

 Sources du même auteur

Source avec Zip SYSTÈME DE REQUÊTE SUR DES DONNÉES JSON
Source avec Zip Source avec une capture MENU ANIMER HORIZONTALE OU VERTICAL , ACCÈSSIBLE SANS JS (SA...
Source avec Zip MARQUEE VERSION2 COMPATIBLE MOOTOOLS, JQUERY, PROTOTYPE ET S...
Source avec Zip Source avec une capture UID - FRAMEWORK JAVASCRIPT
Source avec Zip DOMBUILDER

 Sources de la même categorie

COLONNES ADAPTABLES EN HAUTEUR par dronoide
Source avec Zip VECTEURS ET MATRICES: OUTILS GRAPHIQUES UTILES par william voirol
Source avec Zip Source avec une capture HTML5 PLAYER par kazma
Source avec Zip Source avec une capture SCROLLBAR PERSONNALISABLE par kazma
Source avec Zip INFO BULLE par RudiRatlos

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture DIAPO EN CSS 3D par kazma
Source avec Zip Source avec une capture EFFET DE TEXTE EN CSS3 par kazma
Source avec Zip Source avec une capture CSS3 TRANSFORM par kazma
Source avec Zip GETELEMENTSBYREG par Kimjoa

Commentaires et avis

Commentaire de Arto_8000 le 11/05/2009 23:35:05

"J'ai optimiser se code pour ie<8 , car les utilisateurs ie ne mettent pas à jour leurs navigateurs comme pour ff , et il est très probable que dans 2 ans ie6 soit encore d'actualité...."

Désolé de te contredire, mais si tu cherches un peu sur les statistiques de version des navigateurs IE 6 perd environ 1% par mois et à ce rythme d'ici 1 an, IE6 devrait représenter de 5%-7% de tous les utilisateurs du web, ce qui est minime. D'ici 2 ans, ça risque d'être en dessous du 1%.

http://marketshare.hitslink.com/browser-market-share.aspx?qprid=3

Pour ce qui est d'IE8, d'ici quelques mois il devrait prendre son envol. En général, les gens  attendent qu'il y ait plusieurs versions stables d'un navigateur avant de le mettre à jour ou que ça vienne dans un service pack.

Sans vouloir commencer de controverse, je voulais simplement donner l'heure juste sur ce qui en est de IE6 et IE8.

Commentaire de Kimjoa le 12/05/2009 00:07:52

ok artos, mais alors pk avant la sortie de ie8 , ie6 représenté presque 20% de parts de marché,presque 2  après la sortie d'ie7 ??

Ton arguments ne tiens pas vraiment,  entre février 2007 et février 2009 les parts de IE7 sont passé de 30% à 47% seulement , ie7 à eu un progression forte au début mais a stagné ensuite, de même ie6 a perdu bcp au début puis de moins en moins...

Les utitlisateurs d'ie sont pour beaucoup, des utilisateurs lambda , il achète leur ordi avec windows et ie, et ne cherche pas à le faire évoluer , ils veulent juste que sa tourne et basta , les seules fois ou ils font évoluer leur logiciel c'est quand ils sont obliger de réinstaller leur windows à case d'un virus , et font appels à des gens si connaissant un peu pour les aider .... j'ai mon expérience de ce genre d'utilisateur, et ils sont majoritaire ... D'ailleur les statistique les font clairement aparaitre ,  se sont les 17% d'utilisateur d'ie6 qui ont pas eu de virus depuis un bail :) ...
A++

Commentaire de Kimjoa le 12/05/2009 00:09:49

puis y a les entreprise qui voient pas l'intérêt de faire perdre à leur admins réseaux 1 journée pour réinstallé tout les ie...

Commentaire de Arto_8000 le 12/05/2009 01:10:59

L'intérêt est déjà présent, beaucoup de site comme GMail délaisse totalement le support pour IE6. Google presse même ces utilisateurs à délaisser IE6.

Source : http://www.tgdaily.com/content/view/40785/140/

Pour les entreprises ce qui est commun c'est d'attendre 2 générations de OS avant de mettre à jour tout leur réseau. Et qu'est qui s'en vient ? Windows 7 et comme par magie c'est la deuxième version après Windows XP. Du moment que les premiers services packs de Windows 7 vont commencer à sortir plusieurs compagnies vont commencer à faire la migration à Windows 7 et du même coup vers IE7 ou 8.

Il ne faut pas croire que les compagnies vont toujours rouler sur les mêmes versions. Si c'était vrai il serait encore sur IE3.

En passant, en entreprise on utilise des ghost (http://fr.wikipedia.org/wiki/Norton_Ghost) que l'on redistribue sur toutes les machines en même temps. Les administrateurs n'updatent pas manuellement toutes les machines comme le suppose ton dernier message. Généralement le problème avec les entreprises est qu'ils veulent être sûr qu'une mise à jour ne crée pas de problème de tout genre. Ce n'est pas une question de temps en entreprise, c'est une question de problème potentiel, car une seule journée de disfonctionnement peut coûter cher à une entreprise.

Si rester sur IE6 rend les gens disfonctionnel, c'est à leur avantage d'au moins faire la mise à jour vers IE7. Surtout que IE7 à traverser le temps et que les problèmes potentiels à ce stade sont minimes.

Commentaire de Kimjoa le 12/05/2009 01:37:54

mais arto , je comprend parfaitement ton point de vue, moi aussi si je pouvais je développerais pas pour ie6 ou 7 ou ie tout court, mais le problème est là , et c'est pas google qui va changer les choses , de plus il reste ie7 qui est là pour encore un moment ...
concernant les ghost c'est vrai t'as raison , mais même avec cette méthode , c'est loin d'être une priorité  pour les entreprises , qui soit dit en passant, passe de plus en plus vers linux et l'open source...
bref ,  préfèrerais que l'on parle de mon code , je fais m'a librairie , et j'ai fait le choix de faire mon sélécteurs plutôt que de prendre un autre comme sizzle de jquery ou domquery d'extjs  , il se trouve que sa permet de rendre une fonction récente cross-browser , d'où l'argument d'ie6 et 7 ...
voilà si t'as des questions sur le code, sur son utilisation, je suis dispo ....
a++

Commentaire de lakichemole le 12/05/2009 10:27:54

Juste pour dire mon expérience chez un des 3 opérateur téléphonique, nous somme encore sous IE6 et la principale raison de ne pas passer à une version supérieur ce n'est pas forcément le déploiement mais c'est surtout qu'il faudrait repasser sur tous les site intranet web de la boite pour voir si ils fonctionnent bien sous des version supérieur (et la vous me direz ils avaient cas développer des bon site web bien conforme, mais le fait est que ce n'est pas le cas)
Ceci étant dis je pense aussi que IE6 ne représentera d'ici 2 ans qu'une infime partie des navigateur, en tout cas pour les pays dis "développer" et ou dépenser 200 euro pour un nouveau PC n'est pas une chose inconcevable.
Maintenant le fait que KimJoa nous propose une optimisation pour des version antérieur je troyve ça très bien, moi je serais déjà content de fournir un code qui soit utilisé par 1 personne alors 1% des utilisateur du net J'achète!!

Commentaire de XtremDuke le 12/05/2009 12:24:36

Bien que n'étant pas fan des "eval()" je doit admettre que c'est du très bon boulot. J'ai testé sous IE6, 7, 8 FF et Safari et les performances sont belles et bien là. Le plus impresionnant reste sans doute les perfs sous IE6.
Cependant sous FF, il semblerait que ta source peine un peu. Tu devrais utiliser la méthode "evaluate" de l'objet "document" qui permet d'executer des requetes XPath.

Grand bravo à toi  ! Ce genre d'algorythme n'est jamais facile à réaliser.

Commentaire de Kimjoa le 12/05/2009 14:31:30

merci de vos commentaire !!

lakichemole -> je sais pas si, dans 2 ans, ie6 représentera 1% ou 5%  ou que ie7 baissera aussi considérablement , mais ce qui est sur c'est que  un développeur web soucieux , devra encore les prendre en charge ... j'ai hésité longtemps à faire se script, mais en regardant les statistiques je me suis lancé , en m'apercevant qu'il se passerait un long moment avant que 99% des navigateurs prenne en charge querySelectorAll ... Maintenant si 1% des utilisateurs utilise un de mes scripts , je rachète code source , et une ferrarie :)

xtremduke -> merci à toi , une note ça serait chouette?? Tout d'abord je voudrais relativiser les perfs , j'utilise la méthode native quand c'est possible comme pour safarie et ie8 , sous ff , j'ai pas voulues faire de xpath car cela aurait alourdit mon code , et les utilisateurs mettent ff mettent régulièrement à jours leurs navigateurs , et ff3.5 implémentera querySelectorAll...
Concernant le eval , je suis pas fan non plus , et j'ai commencer se script sans, mais voulant absolument atteindre des perfs au moins égale à extjs , qui lui utilise partiellement eval aussi , je me suis lancé .... l'évaluation de la fonction généré mais moins de 1 milliseconde dans la plupart des cas , et lorsque 'il s'agit d'appliquer une fonction sur 1000 éléments la perte de temps engendré par le eval , compense largement , les appels de fonctions, test conditionnelle , ou mise en mémoire de variable supplémentaire ...
J'ai aussi appris à bien optimiser mon code , par exemple :
for(var i=0,el;(el=monobjet[i]);i++){} et plus rapide qu'une boucle classique, si on a besoin plusieur fois de monobjet[i]
if(jojo && jojo=='ok'){test1}else{test2} est aussi plus rapide que
if(!jojo || jojo!='ok'){test2}else{tets1} , à cause de l'opérateur && ... et aussi intégré les variables dans les boucles quand s'est possible , ect...

Je crois savoir que tu fais aussi t'as bibliothèque ?? je sera très fière si tu intégré mon script ...
a++

Commentaire de Kimjoa le 12/05/2009 14:39:22

concernant l'optimisation du test conditionnelle ça ressemblé plutôt à

if(jojo && jojo.indexOf('jo')>=0){test1}else{test2}
est  plus rapide que
if(!jojo || jojo.indexOf('jo')>=0){test1}else{test2}
...

Commentaire de Kimjoa le 12/05/2009 14:41:23

hmmm , pas encore ça

if(jojo && jojo.indexOf('jo')>=0){test1}else{test2}
est  plus rapide que
if(!jojo || jojo.indexOf('jo')<0){test2}else{test1}

là c'est bon !!

Commentaire de Kimjoa le 12/05/2009 14:45:20

bon j'ai vraiment du mal aujourd'hui c'est que je viens de me lever :)

if(!(jojo && jojo.indexOf('jo')>=0)){...}
est  plus rapide que
if(!jojo || jojo.indexOf('jo')<0){...}

Commentaire de cosycorner le 18/05/2009 14:29:06

Bon, j'aimerai bien savoir un peu à quoi ça sert tout ça. : QUERYSELECTORALL
Ma définition :
If(! (source.indexOff>=0 {ojjo}
Else ('selecta')<0);

Commentaire de cosycorner le 18/05/2009 14:57:21

perso, je pense que IE n'est pas nécessaire, car il impose ses règles alors que la norme est déjà établie et parfaitement structurée...

Commentaire de lakichemole le 18/05/2009 15:01:23

Oula encore un lancement de débat sur IE vs le monde :)

Commentaire de Kimjoa le 18/05/2009 15:05:58

hé bien ça sert à faire des requêtes sur ton document grâce à une syntaxe, celle des sélecteurs css 3...
en faite concernant le test conditionnelle , je crois bien mettre pris le chou : ) ...
bye


Commentaire de Kimjoa le 18/05/2009 15:08:09

cosycorner , les gens utilise donc ie, on fait avec...

Commentaire de cosycorner le 18/05/2009 15:09:58

Oui, si on avait leur moyen, on ferait une grosse campagne moralisatrice ... !!!

Commentaire de Arto_8000 le 18/05/2009 16:58:18

Cosycorner -> Je te dirais que c'est petit à petit le contraire qui se passe. Depuis quelques années, IE a notamment mis le AcidTest2 sur ces objectifs pour IE8 (ce qui est déjà réalisé). Si tu veux attaquer IE essaie au moins d'avoir des arguments valables et qui ont un certain fondement. Le fait que IE impose ces règles est de moins en moins vrai.

Sinon pour IE le sujet est clos, quand t'es développeur tu dois développer pour IE que ça soit le bonheur ou l'horreur.

Commentaire de cosycorner le 18/05/2009 17:04:00

je n'ai pas IE pour mac, désolée, je testerai sur un autre ordinateur ...

Commentaire de XtremDuke le 18/05/2009 20:39:44

"Sinon pour IE le sujet est clos, quand t'es développeur tu dois développer pour IE que ça soit le bonheur ou l'horreur."

>> Ça fait plaisir à entendre :)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

creer des option dans une liste deroulate à la volée [ par axl63800 ] Bon je vais essayer d'etre le plus clair possibleEn gros j'ai un formulaire pour remplir une base de donnée et qui va recolter des infos dans celle ci Recuperer le SId avec javascript [ par nikos283 ] SalutJ'ai une petit proble, voila j'ai une page php qui crée une session et j'aimerai avec javascript recupérer le nom et valeur de cette session. pou Identification [ par MiTcH37 ] bijour,j'aimerais créer un login automatique, alors il me faudrait soit l'ID de l'internaute (s'il ne change pas à chaque connection ?) ou avec un coo Mozilla et position d'un <div> [ par philagui ] Bonjour,Voila j'utilise le script suivant pour positionner et afficher quelque chose sur une page:function show(calque, id) { document.getElementById( cellules d'un tableau qui changent de couleur [ par hella71 ] Merci Vous trouverez ci apres le scripttout va bien sur iexplorer mais sur netscape ca marche pas Merciiiiiiiiiii pour votre aide.&lt;script language= bouton et action, un chti coup de pouce... [ par Spiritraid ] voici mon code : function help_box(id_code) {var info = new array( "test", ) if(info[id_code]) { document.post.h Récupérer l'id d'un select [ par iomega ] Bonjour à tous je voudrai récupérer dans un autre champs nommé auteur le numéro d'index d'un select mais le problème est que le l'id contient du text position d'un id [ par pqmoltonel ] bonjour, je cherche desespérément une fonction / propriétée qui permet de retourner la position d'un element html quelconque contenant un id:voila le Download sur poste client [ par ogas430 ] Bonsoir !Pour eviter les problemes de redondance de fichiers, j'ai ajouté une table dans mysql avec un ID et un champ correspondant au nom du fichier. Défilement automatique des pages d'un site ? [ par adelysnet ] Bonjour,Je souhaite faire défiler des pages d'un site automatiquement.Chaque page finirait par viewimage2.php?imageID=1&style=listing En fait, seule l


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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 : 4,462 sec (3)

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