22.8.20

bookmarklet avec jQuery

 JQuery apporte de nombreuses fonctionnalités aux sites web. Cette bibliothèque JavaScript open source facilite l'écriture de script. Lorsqu'un site web n’intègre pas jQuery, il est possible de l'injecter avant de l'utiliser comme le montre l'exemple ci-dessous.

bookmarklet avec jQuery
javascript:(function(e,a,g,h,f,c,b,d){if(!(f=e.jQuery)||g>f.fn.jquery||h(f)){c=a.createElement("script");c.type="text/javascript";c.src="https://code.jquery.com/jquery-latest.min.js";c.onload=c.onreadystatechange=function(){if(!b&&(!(d=this.readyState)||d=="loaded"||d=="complete")){h((f=e.jQuery).noConflict(1),b=1);f(c).remove()}};a.documentElement.childNodes[0].appendChild(c)}})(window,document,"1.12.4",function($,L){;$("<b>jQuery</b>").replaceAll("a");$("h1").text("Nouveau Titre").css('color','red');$(":image").hide();});

Ce script ajoute jQuery à la page web, remplace les liens par du texte, change le texte du titre en rouge et cache les images.

Les avantages de jQuery:

  • utilise un code plus concis
  • multiplate-forme
  • compatible avec tous les navigateurs
  • ajoute, modifie ou supprime des éléments avec le DOM
  • anime une page web
  • modifie le CSS
  • envoi et reçoit des données

30.7.20

exemples de favoris scriptés

Voici d'autres exemples de favelets. Ces scripts ajoutent des fonctionnalités au navigateur et améliore la productivité de l'utilisateur. Le code JavaScript modifie le rendu graphique d'une page, récupère des informations ou agit sur le navigateur.



bookmarklet loupe  (augmente la taille du texte au survol de la souris)
javascript:(function(){var x=document.createElement("div");Object.assign(x.style,{position:"fixed",bottom:"0",right:"0",width:"100vw",height:"100vh",zIndex:"99999999",background:"transparent"});document.body.append(x);function getElement(event){x.style.pointerEvents="none";var e=document.elementFromPoint(event.clientX,event.clientY);x.style.pointerEvents="auto";return e};document.addEventListener("mousemove",function(event){var e=getElement(event);
var p=e.getBoundingClientRect();var k=Object.assign(x.style,{background:"rgba(0, 169, 255, 0.2)",outline:"1px solid rgba(0, 169, 255, 0.2)",top:""+p.top+"px",left:""+p.left+"px",width:""+p.width+"px",height:""+p.height+"px"})});x.addEventListener("click",function(event){var e=getElement(event);var t=e.textContent||e.value;e.style.fontSize="20pt";document.body.removeChild(x)})})();


copie de zone de texte  (sélectionne par division du contenu et copie le texte)
javascript:(function(){var x=document.createElement("div");Object.assign(x.style,{position:"fixed",bottom:"0",right:"0",width:"100vw",height:"100vh",zIndex:"99999999",background:"transparent"});document.body.append(x);function getElement(event){x.style.pointerEvents="none";var e=document.elementFromPoint(event.clientX,event.clientY);x.style.pointerEvents="auto";return e};document.addEventListener("mousemove",function(event){var e=getElement(event);var p=e.getBoundingClientRect();Object.assign(x.style,{background:"rgba(0, 169, 255, 0.2)",outline:"1px solid rgba(0, 169, 255, 0.2)",top:""+p.top+"px",left:""+p.left+"px",width:""+p.width+"px",height:""+p.height+"px"})});x.addEventListener("click",function(event){var e=getElement(event);var t=e.textContent||e.value;function copy(){var s=document.createElement("textarea");document.body.appendChild(s);s.value=t;s.select();document.execCommand("copy");document.body.removeChild(s);};copy(t);document.body.removeChild(x)})})()

recherche de texte  (dénombre et surligne le texte recherché)
javascript:(function(){var count=0;var t=prompt("recherche le texte:", "");if(t==null || t.length==0)return;d=document.defaultView;function x(node, te, len){var p, s, a, b, e, m;var s=0;if( node.nodeType==3 ){var p=node.data.toUpperCase().indexOf(te);if(p>=0){var a=document.createElement("SPAN");a.style.backgroundColor="rgba(0, 169, 255, 0.5)";var b=node.splitText(p);var e=b.splitText(len);var m=b.cloneNode(true);a.appendChild(m);b.parentNode.replaceChild(a,b);++count;s=1;}}else if( node.nodeType==1 && node.childNodes && node.tagName.toUpperCase()!="SCRIPT" && node.tagName.toUpperCase!="STYLE"){for (var c=0;c < node.childNodes.length;++c){c=c+x(node.childNodes[c], te, len);}}return s;};x(document.body, t.toUpperCase(), t.length);if (count>0 ){;alert("trouvé "+count+" occurrence"+ (count>1 ?"s":"")+" de:         "+t+"");}else {;alert("aucune occurrence trouvée");};})();

recherche d'email sur la page web  (le script recherche des adresses mail sur la page)
javascript:function b() {var m='';for(var i=0; i<document.links.length; i++){if(document.links[i].protocol=='mailto:'){var n=document.links[i].toString();m+=n.substring(7, n.length) + '\n';}}if(m!=''){alert(m);}else{alert('aucune adresse mail sur cette page');}}b();

enregistrer le document  (télécharger le document au format html)
javascript:(function(){var a=docu.length==0)return;d=document.defaultView;function x(node, te, len){var p, s, a, b, e, m;var s=0;if( node.nodeType==3 ){var p=node.data.toUpperCase().indexOf(te);if(p>=0){var a=document.createElement("SPAN");a.style.backgroundColor="rgba(0, 169, 255, 0.5)";var b=node.splitText(p);var e=b.splitText(len);var m=b.cloneNode(true);a.appendChild(m);b.parentNode.replaceChild(a,b);++count;s=1;}}else if( node.nodeType==1 && node.childNodes && node.tagName.toUpperCase()!="SCRIPT" && node.tagName.toUpperCase!="STYLE"){for (var c=0;c < node.childNodes.length;++c){c=c+x(node.childNodes[c], te, len);}}return s;};x(document.body, t.toUpperCase(), t.length);if (count>0 ){;alert("trouvé "+count+" occurrence"+ (count>1 ?"s":"")+" de:         "+t+"");}else {;alert("aucune occurrence trouvée");};})();

insertion de texte  (insertion de texte à choix)
javascript:var a="verybiglongemail@google.ch";var b="La règle d'or de la conduite est la tolérance mutuelle, car nous ne penserons jamais tous de la même façon, nous ne verrons qu'une partie de la vérité et sous des angles différents.";var c="La douceur du miel ne console pas de la piqûre de l'abeille.";var d="Il n'existe que deux choses infinies, l'univers et la bêtise humaine... mais pour l'univers, je n'ai pas de certitude absolue.";function copy(text) {var presse = document.createElement("textarea");document.body.appendChild(presse);presse.value = text;presse.select();document.execCommand("copy");document.body.removeChild(presse);};var question1="";var question=prompt("1:  "+ a+" \n"+"2:  "+ b+" \n"+"3:  "+ c+" \n"+"4:  "+ d, "");var y=question.charCodeAt();if (y===49){;copy(a);};if (y===50){;copy(b);};if (y===51){;copy(c);};if (y===52){;copy(d);}

insertion d'un texte unique  (dans l'exemple une adresse mail est copiée dans le presse papier)
javascript:var a="verybiglongemail@google.ch";function copy(text) {var presse = document.createElement("textarea");document.body.appendChild(presse);presse.value = text;presse.select();document.execCommand("copy");document.body.removeChild(presse);};copy(a)

scroll top  (en cliquant sur ce favori, le navigateur remonte en haut de la page)
javascript:window.scroll(0, 0);

scroll down  (en cliquant sur ce favori, le navigateur descend en bas de la page)
javascript:var x =document.documentElement.scrollHeight;window.scroll(0, x);

retour arrière  (recule d'une page dans l'historique)
javascript:history.back();

avance  (page suivante dans le navigateur)
javascript:history.go(1)

javascript:(function(){var a=document.createElement('a');a.href = location.href;a.download='fichier.html';document.body.appendChild(a);a.click();a.parentNode.removeChild(a);})();

cookie  (affiche le cookie de la page)
javascript:alert(document.cookie)

masque les images  (masque les images de la page web)
javascript:(function(){var imgs=document.getElementsByTagName("img");for(var i=0;i<imgs.length;i++)imgs[i].style.visibility="hidden"}());

augmente la taille du texte  (modifie la taille du texte, 14pt dans l'exemple suivant)
javascript:(function(){;for(i=0;i<document.getElementsByTagName('*').length;i++)(document.getElementsByTagName('*')[i].style.fontSize='14pt');}());

dictionnaire  (recherche le mot sélectionné dans un dictionnaire en ligne)
javascript:d=document.getSelection();if(d!=null)location="https://www.larousse.fr/dictionnaires/francais/="+escape(d);void(0);

11.7.20

exemples de bookmarklets

Un bookmarklet est un marque-page qui exécute du code JavaScript pour apporter des fonctionnalités intéressantes au navigateur.
Appelé aussi signapplet, applisignet, marque-page scripté ou favelets: ils récupèrent des informations d'une page web, modifient le rendu graphique d'une page web, agissent sur le navigateur ou interrogent directement un moteur de recherche.

Le code javascript est inscrit dans la section "url" du signet, il commence par "javascript:".
Le code s’exécute lorsque l'on clique sur le bookmark pour accomplir une tâche.
Les applisignets fonctionnent aussi sous la forme de liens dans une page html.
Ces liens favoris fonctionnent généralement sur n'importe quel navigateur, ils rendent les tâches répétitives du navigateur plus rapides et plus faciles à effectuer.
Pour intégrer un favelet dans la barre de favoris d'un navigateur, glisser déposer le lien du bookmarklet.
Ou copier le code et l'insérer dans la zone url du signet.


Cette vidéo présente plusieurs marque-pages dont voici les codes js:


recherche d'adresse sur google maps
javascript:d=""+(window.getSelection?window.getSelection():document.getSelection?document.getSelection():document.selection.createRange().text);d=d.replace(/\r\n|\r|\n/g," ,");if(!d)d=prompt("entrer l'adresse:", "");if(d!=null)location="http://maps.google.com?q="+escape(d).replace(/ /g,"+");void 0;

bookmarklet prise de note sans sauvegarde
javascript:var myWindow = window.open("", "MsgWindow", "width=400,height=600");myWindow.document.write("<html contenteditable><body><p></p></body></html>");

bookmarklet recherche de synonymes
javascript:d=document.getSelection();if(d!=null)location="https://www.synonymes.com/synonyme.php?mot="+escape(d);void(0);

bookmarklet contrôle du nom de domaine de la page web

javascript:function x(){;var site=window.location.hostname;if (site == "www.google.ch" || site =="stackoverflow.com"){;alert("domaine connu")}else{;alert("domaine inconnu")};}x()

bookmarklet impression de la page web
javascript:window.print();

bookmarklet date actuelle  (format européen)
javascript:var e = new Date();var d = e.getDate();var m = e.getMonth()+1;var y = e.getFullYear();alert(d+"-"+m+"-"+y);

bookmarklet retourne le code unicode d'une chaîne de caractères
javascript:var question1="";var question=prompt("", "");for (var i = 0; i < question.length; i++) {question1=question1+question.charCodeAt(i);};function copy(text) {var presse = document.createElement("textarea");document.body.appendChild(presse);presse.value = text;presse.select();document.execCommand("copy");document.body.removeChild(presse);};copy(question1);

bookmarklet afficher le mot de passe masqué
javascript:(function(){var s,F,j,f,i; s = ""; F = document.forms; for(j=0; j<F.length; ++j) { f = F[j]; for (i=0; i<f.length; ++i) { if (f[i].type.toLowerCase() == "password") s += f[i].value + "\n"; } } if (s) alert("mot de passe en clair:\n\n" + s); else alert("mot de passe en clair");})();

bookmarklet copie du texte sélectionné
javascript:d=document.getSelection();function copy(text) {var presse = document.createElement("textarea");document.body.appendChild(presse);presse.value = text;presse.select();document.execCommand("copy");document.body.removeChild(presse);};copy(d);

bookmarklet appliquer le mode sombre à la page web
javascript:(function(){var new_style, styles='* { background: black !important; color: #C0C0C0 !important; line-height:1.7em !important} :link, :link * { color: #0099FF !important } :visited, :visited * { color: #6666CC !important }'; if(document.createStyleSheet) { document.createStyleSheet("javascript:'"+styles+"'"); } else { new_style=document.createElement('link'); new_style.rel='stylesheet'; new_style.href='data:text/css,'+escape(styles); document.getElementsByTagName("head")[0].appendChild(new_style); } }());
 
javascript:alert(document.referrer);

4.7.20

signet générateur de mot de passe

Ce script placé dans un favori (bookmarklet), est un générateur de mot de passe écrit en javascript. Le code récupère le mot de passe simple que l'utilisateur inscrit dans un popup, le chiffre et l'allonge de façon a créer un password fort.
Le résultat est une suite de lettres, de chiffres et de caractères qui n'est plus lisible. Ce qui augmente considérablement l'entropie du mot de passe. Le script copie le résultat permettant à l'utilisateur de le coller dans le formulaire de connexion.
Les différents paramètres du cryptage peuvent être changer afin de personnaliser le script.
Cette méthode rend possible la mémorisation de nombreux mot de passes lisibles et donc leurs utilisations uniques.


-Créer un favori dans Chrome
-Cliquer avec le bouton droit sur le favori
-Modifier...
-Copier le code suivant
-Coller le code dans le champ "url" du marque-page
-Modifier le "Nom" du favori
-Enregistrer

ou glisser déposer le lien suivant dans la barre de favoris du navigateur

bookmarklet générateur de mot de passe complexe
javascript:var q=prompt("mot de passe", "");var k="x%&H/:?M*-g=)q@(I/<S";var c="";var x=q;var long=x.length;for (pas = 1; long < 28; pas++){var z = 23 % (pas+7);c.split("").reverse().join(""),c=c+k.substring(pas,pas+1)+q.substring(pas,pas+1)+(pas+z)+q.substring(3,5).split("").reverse().join("")+z+k.substring(pas+4,pas+5)+q.substring(pas+1,pas+2)+q.substring(long-1,long)+k.substring(pas+3,pas+3);long=c.length;};function copy(text) {var presse = document.createElement("textarea");document.body.appendChild(presse);presse.value = text;presse.select();document.execCommand("copy");document.body.removeChild(presse);};copy(c)

Lors de la connexion à un compte, la vérification de l'adresse web est primordiale pour éviter le hameçonnage. Le phishing est une technique qui utilise des copies de sites de confiances pour tromper les internautes. L'url de ces sites diffère des sites copiés.
Cette version du générateur de mot de passe contrôle si le domaine est connu. Si le domaine est inconnu le mot de passe ne peut pas être créé. Un message d'alerte informe l'utilisateur.

Pour configurer le générateur, il faut modifier les noms de domaines inscrits dans le code javascript. Dans l'exemple il s'agit de "accounts.google.com" et de "www.linkedin.com".

javascript:function xx(){;var q=prompt("mot de passe", "");var k="x%&H/:?M*-g=)q@(I/<S";var c="";var x=q;var long=x.length;for (pas = 1; long < 28; pas++){var z = 23 % (pas+7);c.split("").reverse().join(""),c=c+k.substring(pas,pas+1)+q.substring(pas,pas+1)+(pas+z)+q.substring(3,5).split("").reverse().join("")+z+k.substring(pas+4,pas+5)+q.substring(pas+1,pas+2)+q.substring(long-1,long)+k.substring(pas+3,pas+3);long=c.length;};function copy(text) {var presse = document.createElement("textarea");document.body.appendChild(presse);presse.value = text;presse.select();document.execCommand("copy");document.body.removeChild(presse);};copy(c);};var site=window.location.hostname;if(site == "accounts.google.com" || site =="www.linkedin.com"){;xx();}else{;alert("attention domaine inconnu")}

3.7.20

augmenter l'entropie d'un mot de passe avec un bookmarklet

Les bookmarklets permettent de réaliser des tâches en utilisant du code javascript à l'intérieur d'un favori. Cette vidéo présente des favoris pour se connecter à son compte google.
Le premier remplit l'adresse mail du formulaire de connexion et clique sur le bouton suivant. Le deuxième actualise la page web. Le troisième demande le mot de passe de l'utilisateur, chiffre le mot de passe et l'inscrit dans le formulaire.

L'internaute peut utiliser un mot de passe simple et facile a mémoriser. Le script se charge d'augmenter la longueur et la complexité du password.
Le code du signet récupère les caractères du mot de passe, les mélanges et en ajoute pour obtenir une meilleure séquence de caractères.
Cette méthode fonctionne avec chrome sur la page de connexion de Google.
Pour modifier un signet, il suffit d'en créer un, de cliquer avec le bouton droit de la souris, de sélectionner "modifier", de changer le nom et de remplacer L’URL par le code Javascript.


bookmarklet insérer un email dans le formulaire de connexion de google
javascript:document.getElementById("identifierId").setAttribute("value","test@gmail.com"),document.querySelectorAll('[role="button"]:last-of-type')[0].setAttribute("id", "clicbouton"),document.getElementById("clicbouton").click()

bookmarklet actualiser la page web
javascript:location.reload()

bookmarklet générateur de mot de passe fort et copie dans le presse papier
javascript:var q=prompt("mot de passe", "");var k="x%j&H/i:?Ms*-g=)q@(lI/S!";var c="";var x=q;var long=x.length;for (pas = 1; long < 31; pas++){var z = 23 % (pas+7);c.split("").reverse().join(""),c=c+k.substring(pas,pas+1)+q.substring(pas,pas+1)+(pas+z)+q.substring(3,5).split("").reverse().join("")+z+k.substring(pas+4,pas+5)+q.substring(pas+1,pas+2)+q.substring(long-1,long)+k.substring(pas+3,pas+3);long=c.length;};document.getElementsByName("password")[0].setAttribute("id", "new"),document.getElementById("new").setAttribute("value",c.split("").reverse().join(""))

-Pour personnaliser le chiffrement du mot de passe, il est possible de changer la longueur du mot de passe crypté, la variable k avec d'autre caractères spéciaux, la variable z (moulo),...

1.7.20

bookmarklets pour YouTube

Ces bookmarklets améliorent la productivité sur la plateforme YouTube.



Ce bookmarklet utilise un texte sélectionné ou affiche un popup pour rechercher le terme sur YouTube:
YouTube recherche
javascript:d=""+(window.getSelection?window.getSelection():document.getSelection?document.getSelection():document.selection.createRange().text);d=d.replace(/\r\n|\r|\n/g," ,");if(!d)d=prompt("rechercher sur YouTube:", "");if(d!=null)location="https://www.youtube.com/results?search_query="+escape(d).replace(/ /g,"+");void 0

Ce bookmarklet active le thème sombre:
Youtube thème sombre
javascript:document.cookie=("PREF=f4=4000000&f6="+(((document.cookie||"").match(/PREF=f4=4000000&f6=400/))?8000:400)+";domain=.youtube.com");location.reload();

Ce bookmarklet active le thème clair:
Youtube désactive thème sombre
javascript:document.cookie=("PREF=f4=4000000&f6="+(((document.cookie||"").match(/PREF=f4=4000000&f6=8000/))?400:8000)+";domain=.youtube.com");location.reload();

Ce signapplet affiche la vidéo en mode cinéma:
Youtube mode cinéma
javascript:document.cookie=("wide="+(((document.cookie||"").match(/wide=1/))?0:1)+";domain=.youtube.com");location.reload();

Ce favelet affiche le nombre de vues d'une vidéo:
YouTube vues
javascript:var x = document.getElementsByClassName("style-scope yt-icon");var y=x[0].innerHTML;alert(y);

Ce bookmarklet met en pause une vidéo:
YouTube pause
javascript:void function(){y=document.getElementById("movie_player"),y.pauseVideo();}()

Cette version du favelet affiche le temps de la pause:
YouTube pause + temps
javascript:void function(){y=document.getElementById("movie_player"),y.pauseVideo();}();alert(y.getCurrentTime())

Ce bookmarklet lit la vidéo:
YouTube play
javascript:void function(){y=document.getElementById("movie_player"),y.playVideo();}()

Ce bookmarklet augmente la vitesse de lecture de la vidéo:
YouTube +
javascript:(function(){;Array.from(document.getElementsByTagName('video')).forEach(v => v.playbackRate *= 1.25);}());

Ce bookmarklet diminue la vitesse de lecture de la vidéo:
YouTube -
javascript:(function(){;Array.from(document.getElementsByTagName('video')).forEach(v => v.playbackRate *= 0.75);}());

Ce bookmarklet ouvre un onglet avec les chaînes d'une chaîne:
YouTube chaînes
javascript:window.open("https://www.youtube.com/c/emmanuelbron/channels")