Les Bookmarkets peuvent être définis comme des mini-applications se faisant passer pour de minuscules extraits de JavaScript génial qui résident dans votre navigateur et fournissent des fonctionnalités supplémentaires à une page Web..
Aujourd’hui, nous allons étudier la création de bookmarklets à partir de zéro et, en cours de route, quelques bonnes pratiques à suivre..
Ils ne sont pas pour le ringard, en fait, ils sont plutôt centrés sur l'utilisateur.
Nous cherchons toujours des moyens d'améliorer notre expérience de navigation, qu'elle soit répandue ou peu connue. J'avais l'habitude de penser que les booklets appartenaient à ce dernier - le bastion des super-nerds. À mon grand chagrin, j'ai découvert que j'avais complètement tort sur le sujet. En fait, ils ne sont pas centrés sur l'utilisateur, ils implémentent de nombreuses fonctionnalités plutôt soignées et, comme prévu, c'est devenu une partie essentielle de la façon dont j'interagis avec le navigateur - et le l'Internet.
Aujourd'hui, j'aimerais vous guider dans le développement de bookmarklets mettant en œuvre certains bookmarks astucieux. Oui, signets. Nous en construirons plus d'un, bien que minuscules. Intrigué? Commençons!
Pour citer mon article intro:
Les Bookmarkets peuvent être définis en tant que mini applications se faisant passer pour de minuscules extraits de JavaScript génial qui résident dans votre navigateur et fournissent des fonctionnalités supplémentaires en un clic..
Le mot lui-même est un mélange, valise pour le pédant, des mots signet et applet. Également appelés favelets, ces minuscules extraits de JavaScript vous permettent de créer des fonctionnalités supplémentaires pour toutes les pages que vous visitez..
Parce qu'ils sont composés uniquement de JavaScript, ils sont plutôt portables: ils sont pris en charge par tous les navigateurs sur toutes les plateformes, même sur les mobiles et les tablettes. Les installer est aussi simple que de les faire glisser dans leur barre d’outils!
Le fait est que les bookmarklets vous permettent de réaliser un grand nombre de tâches trop centrées sur les développeurs. Chaque fonctionnalité que vous obtenez avec un bookmarklet peut être dupliquée en utilisant la console du navigateur et un peu de temps. Les bookmarklets simplifient simplement le processus - empaqueter le code qui implémente certaines fonctionnalités à l'intérieur d'un petit bouton bien ordonné.
Les bookmarklets peuvent être classés dans plusieurs catégories:
Le premier point que vous devez retenir est de préfixer tout le code JavaScript avec le javascript
URI. Les navigateurs ont implémenté ce préfixe spécifique afin que le contenu suivi par celui-ci puisse être traité et analysé comme un code JavaScript approprié.
Par exemple, cliquer sur ce lien - voir son code ci-dessous - alertera un texte.
Linky
N'oubliez pas que votre code sera exécuté sur la page actuellement chargée - une page qui aura probablement son propre code JavaScript et toutes les collisions qui en résultent qu'elle implique. La dernière chose dont vous avez besoin est que votre bookmarklet coupe la page en cours..
En enveloppant parfaitement votre code dans une fonction anonyme, vous vous assurez qu'il n'y a aucune collision de nommage. De plus, les noeuds JavaScript seront sidérés et penseront que vous êtes un dieu, si vous aimez ce genre de chose..
javascript: (function () // votre code ici) ();
Ceci est pertinent lorsque vous utilisez JavaScript ailleurs. Toujours, toujours isolez votre code.
Un bookmarklet ne doit pas nécessairement être minuscule, vous êtes libre d'aller aussi gros que vous le souhaitez. Dans ces cas, dans l'intérêt de la distribution et de la mise à jour de votre code sans intervention manuelle de l'utilisateur, il est préférable de créer un wrapper capable d'extraire le code si nécessaire..
javascript: (function () var jsCode = document.createElement ('script'); jsCode.setAttribute ('src', 'http: //path/to/external/file.js'); document.body.appendChild ( jsCode); ());
C’est à peu près ce que le code ci-dessus fait: il crée un élément de script, définit le fichier source sur un fichier hébergé ailleurs et l’ajoute au document. Ainsi, chaque fois qu'une partie de votre code change, vous pouvez déployer vos modifications sur une source unique et la propager instantanément à chaque utilisateur..
Remarque: Vous n'êtes pas limité à faire cela pour JavaScript uniquement. Si votre bookmarklet utilise un frontal, vous êtes également libre d'extraire le code HTML et CSS en externe, ce qui rend votre bookmarklet véritablement auto-actualisé..
Encore une fois, si vous construisez le géant d'un bookmarklet, vous aurez peut-être besoin de l'une de ces bibliothèques JavaScript. Mais les utiliser dans votre page n’est pas aussi simple que de l’inclure, vous devez vous assurer que les bibliothèques ne sont pas déjà disponibles. Des bibliothèques telles que jQuery et MooTools dominent le marché et vous feriez bien de vous assurer qu'elles ne sont pas déjà chargées..
Un autre problème est que la page peut avoir chargé une autre bibliothèque, ce qui peut entraîner des conflits sur le contrôle du symbole $. Les collisions de versions peuvent également entrer en jeu à un moment donné, alors gardez cela à l'esprit également..
Voici un shell rapide pour le code que j'utilise généralement. N'oubliez pas que, dans votre code de production, vous devrez prendre en compte les problèmes mentionnés ci-dessus..
if (! ($ = window.jQuery)) // typeof jQuery == 'undefined' fonctionne aussi script = document.createElement ('script'); script.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js'; script.onload = releasetheKraken; document.body.appendChild (script); else releasetheKraken (); function releasetheKraken () // Le Kraken a été publié, maître! // Oui, je suis enfantin. Placez votre code ici
Le code devrait être assez explicite. Parcourons-le vite quand même.
Si vous cherchez à éviter tout ce problème, je recommande fortement l'excellent générateur de bookmarklets de Ben Alman. Il traite les conflits d'espaces de noms et de versions de manière très propre. Bon produit!
Les bookmarklets sont inutiles si, involontairement, ils cassent une page.
Je ne saurais trop insister sur ce point. Les bookmarklets sont inutiles s'ils, involontairement, cassent une page. Et le souci de JavaScript n'est pas la seule chose à laquelle vous devez faire face.
Si vous avez un front-end, le HTML et le CSS entrent également en jeu. N'attribuez pas à vos conteneurs et à vos classes des noms génériques - si vous le nommez 'conteneur', vous aurez toujours ma haine éternelle.
Un moyen facile est de préfixer [ou de suffixe, cela ne me dérange pas] de tout avec une chaîne spécifique à un bookmarklet. Et lorsque vous écrivez votre code CSS, soyez très, très spécifique. Utiliser la mise en cascade est agréable, mais utilisez-le avec une précision extrême. Avoir des styles qui fuient sur la page principale est irrégulier et ne suscite aucune confiance.
Si vous créez un bookmarklet plus petit, où l'inclusion d'une bibliothèque tierce semble inutile, vous rencontrerez un démon toujours présent: la compatibilité entre navigateurs..
Cela peut sembler assez évident, mais c’est quelque chose que beaucoup de gens oublient, souvent. Assurez-vous de tester autant de navigateurs sur autant de plateformes que possible.
Un autre piège facile à utiliser est un bookmarklet destiné à fonctionner sur tous les sites uniquement de manière sélective. Les pages peuvent avoir différentes hiérarchies et utiliser différentes méthodologies. Certains sites peuvent adopter HTML5 et utiliser les conteneurs associés, tandis que d'autres peuvent le jouer en toute sécurité et utiliser des divs génériques. Lorsque vous cherchez des informations, assurez-vous de prendre en compte chaque école de développement..
Maintenant que nous avons pris en compte certains points à garder à l’esprit lors du développement, nous allons construire les trois bookmarklets dont j'ai parlé précédemment - un appartenant à chaque catégorie..
Si vous êtes déjà familiarisé avec JavaScript de base, le code suivant devrait être un jeu d'enfant - ce ne sont que quelques lignes de code! Les bookmarklets ci-dessous sont avec moi depuis quelque temps déjà et je n'arrive pas à savoir où je les ai vus à l'origine. Si vous le faites, laissez-moi une note rapide dans les commentaires et je vais ajouter des crédits en conséquence.
Nous commencerons par un très facile: soumettre à un service externe, Reddit dans notre cas..
javascript: location.href = 'http: //www.reddit.com/submit? url =' + encodeURIComponent (location.href) + '& title =' + encodeURIComponent (document.title)
Ceci est quelque chose d'assez simple, pris directement sur le site. Pas d'encapsuleur anonyme ni d'espace de nom car la fonctionnalité est assez limitée.
Lorsque le bookmarklet est appelé, les opérations suivantes ont lieu, dans un ordre logique:
location.href
et titre du document
encodeURIComponent
méthodeCe modèle fonctionne assez bien pour la plupart des recherches et des soumissions. La seule variable ici serait l'URL à laquelle vous soumettez - chaque application adopte une approche différente. Moins d'une minute de recherche devrait vous voir à travers.
Par exemple, un bookmarklet de validation ressemblerait à ceci:
javascript: location.href = 'http: //validator.w3.org/check? uri =' + encodeURIComponent (location.href)
Notez que nous avons simplement supprimé le titre de la page et modifié la structure de l'URL pour qu'elle pointe vers le service de validation W3..
javascript: void (document.bgColor = prompt ("Couleur? Hex ou nom suffira. Puis-je suggérer le rose? ',' rose '))
C'est aussi simple qu'il y paraît. Pour garder les choses super simples, j'ai choisi de ne pas introduire de variables et de validation. Nous allons simplement regarder le code de base.
document.bgColor
. C'est tout! Ouais je sais bgColor
est obsolète et oui, je sais que je devrais me sentir sale, mais cela suffira, car un test rapide sur les navigateurs modernes est positif.
Vous pouvez jouer avec ceux-ci un peu. Cela ressemble à la manière dont vous appliquez généralement le style CSS aux éléments via JavaScript. Nous ne faisons que l'appliquer à des pages arbitraires. Notez que les différentes pages ont des structures différentes. Par conséquent, si la page contient un conteneur d'habillage complet, l'effet risque de perdre tout son sens. Dans ces cas, vous devrez peut-être rechercher le conteneur principal, puis lui attribuer le style..
javascript: function () var c = document.cookie.split (";"); pour (var i = 0; i-1? C [i] .sstrstr (0, e): c [i]; document.cookie = n + "=; expire = jeu, 01 janvier 1970 00:00:00 GMT"; ()
Pas vraiment aussi compliqué qu'il n'y paraît - les cookies ont simplement une syntaxe très stricte donc nous devrons l'analyser étape par étape. Passons en revue le code:
c
devient maintenant un tableau contenant tous les cookies définis pour le domaine actuel.N'oubliez pas que les bookmarklets fonctionnent toujours sous la page afin que vous ne puissiez pas accéder aux cookies d'autres domaines. Vous êtes limité à la page sur laquelle vous appelez le bookmarklet..
Et nous avons fini. Rappelez-vous, nous avons simplement gratté la surface des bookmarklets. Beaucoup d'entre elles sont des applications complètes en elles-mêmes, avec un front-end adéquat pour démarrer. Celles-ci prennent beaucoup de temps et de planification, à l'image de toute application non triviale. Il s’agissait simplement de mettre les pieds dans le développement du bookmarklet. J'espère que vous avez trouvé ce tutoriel intéressant et que cela vous a été utile..
Des questions? De belles choses à dire? Des reproches? Hit la section des commentaires et laissez-moi un commentaire. Merci beaucoup pour la lecture!