Puis-je ajouter des options de clic droit dans Google Chrome?

18

Dans Google Chrome, si je sélectionne un morceau de texte et que je fais un clic droit dessus, j'ai la possibilité de:

"Rechercher dans Google pour [texte]"

Je trouve cela extrêmement utile, mais j'aimerais également pouvoir ajouter mes propres options.

Par exemple, je voudrais ajouter la possibilité de rechercher sur amazon.co.uk en utilisant le texte sélectionné ou d'aller directement sur Google maps en utilisant le texte sélectionné (c'est-à-dire une adresse ou un code postal) et ainsi de suite.

Je peux en quelque sorte ajouter cette fonctionnalité en utilisant PhraseExpress, mais je préférerais pouvoir le faire directement à partir de Chrome - est-ce possible?

andygrunt
la source

Réponses:

12

Voici une extension qui utilise l'API des menus contextuels pour ajouter des options au menu contextuel du texte sélectionné et vous permet de définir vos propres recherches personnalisées.

Essayez http://maps.google.com/maps?q=TESTSEARCHpour Google Maps et http://www.amazon.co.uk/s/?url=search-alias%3Daps&field-keywords=TESTSEARCHpour Amazon.co.uk.

gdejohn
la source
Oui, je pense que cela fait exactement ce que je veux - merci. Au fait, vous devez ajouter le terme TESTSEARCH dans vos chaînes pour utiliser le mot ou la phrase sélectionné et cela fonctionne très bien.
andygrunt
J'ai modifié ma réponse pour refléter cela.
gdejohn
15

Il y a une API Context Menus disponible dans les canaux développeur et bêta récemment. Vous pouvez l'utiliser pour écrire vos propres extensions qui ajoutent des options au menu contextuel. Notez que cela ne fonctionnera que pour Google Chrome version 6 et supérieure.

Voici un exemple de la galerie d'extensions officielle:

  • Imgur Uploader (télécharger une image sur Imgur sur un clic droit)

J'ai également écrit trois de mes propres moyens, basés sur ce code:

Vous pouvez les installer à vos risques et périls en cliquant avec le bouton droit sur les liens, en cliquant sur Enregistrer le lien sous… , en trouvant les fichiers sur votre ordinateur et en les faisant glisser dans une fenêtre Google Chrome.

Lisez à propos de l'API ici:

Pour écrire le vôtre, vous avez besoin d'un fichier manifest.json, qui devrait ressembler à ceci:

{
   "background_page": "background.html",
   "description": "Add a context menu item to search for selected text at Google Maps.",
   "icons": {
      "16": "icon16.png",
      "48": "icon48.png"
   },
   "minimum_chrome_version": "6",
   "name": "Google Maps Right Click",
   "permissions": [ "contextMenus", "tabs" ],
   "version": "1.0"
}

Vous avez également besoin d'un fichier background.html, qui devrait ressembler à ceci:

<script>

function searchgooglemaps(info)
{
 var searchstring = info.selectionText;
 chrome.tabs.create({url: "http://maps.google.com/maps?q=" + searchstring})
}

chrome.contextMenus.create({title: "Search Google Maps", contexts:["selection"], onclick: searchgooglemaps});

</script>

Enfin, vous devez avoir au moins une icône 16 × 16 pixels pour le menu contextuel et une icône 48 × 48 pixels pour la page de gestion des extensions. Vous pouvez également spécifier une icône de 128 × 128 pixels, qui s'affiche lors de l'installation, et une icône de 32 × 32 pixels si vous souhaitez soumettre votre extension à la galerie officielle. Toutes vos icônes doivent être répertoriées dans manifest.json. Assurez-vous que les types et les noms de fichiers correspondent.

Mettez les icônes background.html et manifest.json dans un dossier ensemble, puis allez sur la page de gestion des extensions à chrome://extensions, regardez sous le mode développeur (je pense que vous devez exécuter le canal bêta ou supérieur pour que cela apparaisse), cliquez sur Pack extension… , à côté du répertoire racine de l'extension, cliquez sur Parcourir… , recherchez et sélectionnez le dossier que vous avez créé, cliquez sur OK et faites glisser le fichier .crx résultant dans votre fenêtre Google Chrome.

gdejohn
la source
Merci pour ce Charlatan. J'avais entendu parler de la nouvelle API, mais j'attendais de trouver l'extension qui répondait à mes souhaits avant de la publier ici comme réponse finale. Je doute fort que j'essaye de faire ma propre car il y a des gens bien meilleurs que moi pour faire ça. Peut-être que l'auteur de l'extension «Recherche contextuelle» la réécrira pour utiliser la nouvelle API.
andygrunt
Je vous en prie. Il est vraiment très facile d'adapter les exemples ci-dessus pour d'autres sites. Tout ce que vous avez à faire pour le faire fonctionner est de changer l'URL. Tout le reste le rend joli. J'ai modifié le code dans ma réponse afin de rechercher Google Maps. Il fallait seulement changer cinq choses.
gdejohn
Notez qu'il y a des changements dans les extensions chrome, à savoir que manifest.jsonc'est maintenant la version 2 et beaucoup de ces choses ont changé.
Jason
Vos liens vers Dropbox sont rompus. Prêt à mettre à jour?
Bob Hopez
@BobHopez Ces extensions ne fonctionnent plus avec toutes les modifications apportées à Chrome au cours des neuf dernières années.
gdejohn
5

Il existe une extension de recherche contextuelle qui fait ce que vous voulez, sauf qu'elle n'ajoute rien au menu contextuel; au lieu de cela, après avoir sélectionné un morceau de texte sur la page, il affichera un petit bouton avec un triangle bleu à côté, et en cliquant dessus, un menu apparaîtra. texte alternatif

whitequark
la source
Excellent. Cela fait 99% de ce que je veux. Comme vous le dites, il n'ajoute pas les options au menu du clic droit mais, plus important encore, cela ne fonctionne pas partout, par exemple, écrivez quelque chose dans la zone de recherche Google, sélectionnez-le et le bouton n'apparaît pas. J'aimerais toujours savoir s'il est possible d'ajouter les options au menu contextuel, mais cela suffira pour continuer. Merci.
andygrunt
AFAIK, il n'y a aucun moyen d'ajouter des options aux menus natifs de Chrome (comme le menu "Options" en haut à droite) car les extensions ne peuvent modifier que DOM et afficher des pop-ups. C'était probablement un choix intentionnel pour obtenir une meilleure compatibilité multiplateforme.
whitequark
1
C'est une des raisons pour lesquelles je m'en tiens à Firefox.
CGA
@CGA: Firefox est sympa, et je l'ai utilisé pendant des années, mais il est trop lent sur le netbook Atom 2x1600.
whitequark
Je ne peux pas être en désaccord avec vous là-bas.
CGA
1

J'ai profité d'une extension appelée Menu contextuel personnalisé.Il vous permet de créer des éléments de menu contextuel entièrement configurables et fonctionne même dans d'autres navigateurs (Opera: installer les extensions Chrome , Firefox: Chrome Store Foxified ).

  • Installer le "Menu contextuel personnalisé" à partir du Chrome Store
  • Ouvrir les options du menu contextuel personnalisé
  • Dans la section Modification du CRM, sélectionnez Sélection
  • Faites défiler jusqu'à Moteurs de recherche couramment utilisés et ajoutez-en un
  • Il ajoute ce moteur de recherche dans la section Modification du CRM.
  • Cliquez dessus, pas sur son équipement, pour le modifier.
  • Changez le nom en "Recherche sur amazon.fr" ou autre
  • Changez le code en

    var query;
    var url = "https://www.amazon.co.uk/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=%s";
    if (crmAPI.getSelection()) {
        query = crmAPI.getSelection();
    } else {
        query = window.prompt('Please enter a search query.');
    }
    if (query) {
        window.open(url.replace(/%s/g,query), '_blank');
    }
    
  • Créez un autre élément de menu du type de script, appelez-le "Google Map" ou autre, et codez-le de la même manière:

    var query;
    var url = "https://www.google.com/maps/search/%s";
    if (crmAPI.getSelection()) {
        query = crmAPI.getSelection();
    } else {
        query = window.prompt('Please enter a search query.');
    }
    if (query) {
        window.open(url.replace(/%s/g,query), '_blank');
    }
    
undrline
la source
0

Il existe une extension appelée "Recherche par menu contextuel". Il vous permet d'y ajouter des URL, puis lorsque vous sélectionnez un texte et cliquez sur l'une des URL, il transmet ce texte à l'URL sur laquelle vous avez cliqué.

Par exemple, l'URL de recherche pour YouTube est:

http://www.youtube.com/results?search_query=TESTSEARCH

où TESTSEARCH est le texte que vous souhaitez rechercher. Dans l'extension, vous ajoutez cette ligne et elle remplacera automatiquement TESTSEARCH par le texte sélectionné lorsque vous appuyez dessus. Vous pouvez bien sûr ajouter une étiquette pour chaque URL.

Voici le lien vers l'extension.

https://chrome.google.com/webstore/detail/ocpcmghnefmdhljkoiapafejjohldoga

Amjad Abu Saa
la source
0

Salut puisque la question principale a été répondue, je veux contribuer avec quelque chose.

Il s'agit d'un script simplement modifié similaire à la recherche d'images inversée avec google, mais redirige imglink.jpg vers l'Exif Viewer de Jeffrey pour analyser l'EXIF d'une image.

Merci à gdejohn .

Facile, créez ces 2 fichiers que j'ai utilisés le bloc-notes, ajoutez des icônes 16x16, 48x48 et 128x128 (ou supprimez la ligne) et allez dans chrome: // extensions / tick mode développeur ajoutez le dossier contenant les fichiers.

Nom de fichier: manifest.json

{
"manifest_version": 2,
    "background" : { "scripts": ["background.js"] },
    "description": "Agrega un menu contextual para ver el EXIF de imagenes. Jeffrey's Exif Viewer",
    "icons": {
            "16": "icon16.png",
            "48": "icon48.png",
            "128": "icon128.png"
        },
   "minimum_chrome_version": "6",
   "name": "Regex Exif Viewer Right Click",
   "permissions": [ "contextMenus", "tabs", "http://*/*",
 "https://*/*" ],
   "version": "1.0"
}

Nom de fichier: background.js

/**
 * Returns a handler which will open a new tab when activated.
 */


function getClickHandler() {
  return function(info, tab) {

    // The srcUrl property is only available for image elements.

var url = "http://regex.info/exif.cgi?imgurl=" + info.srcUrl;

    // Create a new tabto the info page.

chrome.tabs.create({ url: url, });
  };
};



/**
 * Create a context menu which will only show up for images.
 */


chrome.contextMenus.create({
  "title" : "Get image info via Jeffrey's Exif Viewer",
  "type" : "normal",
  "contexts" : ["image"],
  "onclick" : getClickHandler()
});
Pablo
la source