Czy mogę dodać opcje kliknięcia prawym przyciskiem w Google Chrome?

18

W Google Chrome, jeśli zaznaczę fragment tekstu i kliknę go prawym przyciskiem myszy, otrzymam opcję:

„Wyszukaj w Google [tekst]”

Uważam to za bardzo przydatne, ale chciałbym również móc dodawać własne opcje.

Na przykład chciałbym dodać możliwość przeszukiwania amazon.co.uk przy użyciu wybranego tekstu lub przejścia bezpośrednio do map Google przy użyciu wybranego tekstu (tj. Adresu lub kodu pocztowego) i tak dalej.

Mogę dodać tę funkcję za pomocą PhraseExpress, ale wolałbym to zrobić prosto z Chrome - czy to możliwe?

andygrunt
źródło

Odpowiedzi:

12

Oto rozszerzenie, które korzysta z interfejsu API menu kontekstowego, aby dodać opcje do menu po kliknięciu prawym przyciskiem myszy dla zaznaczonego tekstu i umożliwia zdefiniowanie własnych wyszukiwań.

Wypróbuj http://maps.google.com/maps?q=TESTSEARCHGoogle Maps i http://www.amazon.co.uk/s/?url=search-alias%3Daps&field-keywords=TESTSEARCHAmazon.co.uk.

gdejohn
źródło
Tak, myślę, że robi to dokładnie to, czego chcę - dzięki. Nawiasem mówiąc, musisz dodać termin TESTSEARCH w swoich ciągach, aby użyć wybranego słowa lub frazy i działa świetnie.
andygrunt,
Zredagowałem swoją odpowiedź, aby to odzwierciedlić.
gdejohn
15

Interfejs API menu kontekstowego jest dostępny w kanałach programisty i wersji beta od niedawna. Możesz go używać do pisania własnych rozszerzeń, które dodają opcje do menu po kliknięciu prawym przyciskiem myszy. Pamiętaj, że będzie to działać tylko w przeglądarce Google Chrome w wersji 6 i nowszej.

Oto przykład z oficjalnej galerii rozszerzeń:

Napisałem również trzy własne, oparte na tym kodzie:

  • Kliknij prawym przyciskiem myszy TinEye (wykonaj wyszukiwanie obrazu wstecz w TinEye prawym przyciskiem myszy)
  • Kliknięcie prawym przyciskiem myszy w Wikipedii (wyszukaj artykuły o zaznaczonym tekście w Wikipedii prawym przyciskiem myszy)
  • Kliknij prawym przyciskiem myszy Merriam-Webster (wyszukaj definicję zaznaczonego tekstu w prawym przyciskiem myszy w Merriam-Webster)

Możesz zainstalować je na własne ryzyko, klikając prawym przyciskiem myszy linki, klikając Zapisz link jako… , znajdując pliki na komputerze i przeciągając je do okna Google Chrome.

Przeczytaj o API tutaj:

Aby napisać własny, potrzebujesz pliku manifest.json, który powinien wyglądać mniej więcej tak:

{
   "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"
}

Potrzebujesz również pliku background.html, który powinien wyglądać mniej więcej tak:

<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>

Na koniec powinieneś mieć ikonę przynajmniej 16 x 16 pikseli dla menu kontekstowego i ikonę 48 x 48 pikseli dla strony zarządzania rozszerzeniami. Możesz także określić ikonę 128 × 128 pikseli, która jest wyświetlana podczas instalacji, oraz ikonę 32 × 32 pikseli, jeśli chcesz przesłać swoje rozszerzenie do oficjalnej galerii. Wszystkie twoje ikony muszą być wymienione w pliku manifest.json. Upewnij się, że typy plików i nazwy są zgodne.

Umieść ikony, background.html i manifest.json w folderze razem, a następnie przejdź do strony zarządzania rozszerzeniami w chrome://extensions, spójrz w tryb programisty (myślę, że musisz uruchomić kanał beta lub wyższy, aby się pojawił), kliknij rozszerzenie pakietu… , obok katalogu głównego rozszerzenia kliknij Przeglądaj… , zlokalizuj i wybierz utworzony folder, kliknij OK i przeciągnij wynikowy plik .crx do okna przeglądarki Google Chrome.

gdejohn
źródło
Dzięki za ten Charlatan. Słyszałem o nowym API, ale czekałem, aż znajdę rozszerzenie spełniające moje życzenia, zanim opublikowałem je tutaj jako ostateczną odpowiedź. Bardzo wątpię, czy spróbuję stworzyć własne, ponieważ są o wiele lepsi ludzie, którzy by to robili niż ja. Być może autor rozszerzenia „Wyszukiwanie kontekstowe” przepisuje je, aby korzystać z nowego interfejsu API.
andygrunt,
Nie ma za co. Naprawdę bardzo łatwo jest dostosować powyższe przykłady do innych witryn. Wszystko, co musisz zrobić, aby to działało, to zmienić adres URL. Wszystko inne sprawia, że ​​jest ładna. W odpowiedzi odpowiedziałem na edycję kodu, aby pracować przy wyszukiwaniu w Mapach Google. Musiałem tylko zmienić pięć rzeczy.
gdejohn
Zauważ, że są pewne zmiany w rozszerzeniach chrome, a mianowicie, że manifest.jsonjest teraz wersja 2 i wiele z tych rzeczy się zmieniło.
Jason
Twoje linki do Dropbox są zepsute. Chcesz zaktualizować?
Bob Hopez
@BobHopez Te rozszerzenia nie działają już ze wszystkimi zmianami w Chrome w ciągu ostatnich dziewięciu lat.
gdejohn
5

Istnieje rozszerzenie wyszukiwania kontekstowego, które robi to, co chcesz, z tym wyjątkiem, że nie dodaje niczego do menu po kliknięciu prawym przyciskiem myszy; zamiast tego po zaznaczeniu fragmentu tekstu na stronie pojawi się mały przycisk z niebieskim trójkątem obok niego, a kliknięcie go spowoduje wyświetlenie menu. alternatywny tekst

Whitequark
źródło
Doskonały. To robi 99% tego, czego chcę. Jak mówisz, nie dodaje opcji do menu po kliknięciu prawym przyciskiem myszy, ale, co ważniejsze, nie działa wszędzie, np. Napisz coś w polu wyszukiwania Google, zaznacz to, a przycisk się nie pojawi. Nadal chciałbym usłyszeć, czy można dodać opcje do menu po kliknięciu prawym przyciskiem myszy, ale wystarczy, aby zacząć. Dzięki.
andygrunt,
AFAIK nie ma możliwości dodania opcji do natywnych menu Chrome (takich jak menu „Opcje” w prawym górnym rogu), ponieważ rozszerzenia mogą jedynie modyfikować DOM i wyświetlać wyskakujące okienka. Prawdopodobnie był to celowy wybór, aby osiągnąć lepszą kompatybilność między platformami.
whitequark
1
To jeden z powodów, dla których trzymam się przeglądarki Firefox.
CGA
@CGA: Firefox jest fajny i używałem go od lat, ale na netbooku Atom 2x1600 jest on zbyt powolny.
whitequark
Nie mogę się z tobą nie zgodzić.
CGA
1

Korzystam z rozszerzenia o nazwie Niestandardowe menu prawym przyciskiem myszy. Umożliwia tworzenie w pełni konfigurowalnych elementów menu prawym przyciskiem myszy, a nawet działa w innych przeglądarkach (Opera: Zainstaluj rozszerzenia Chrome , Firefox: Chrome Store Foxified ).

  • Zainstaluj „Niestandardowe menu prawym przyciskiem myszy” ze sklepu Chrome
  • Otwórz opcje niestandardowego menu prawym przyciskiem myszy
  • W sekcji Edycja CRM wybierz Wybór
  • Przewiń w dół do Często używanych wyszukiwarek i dodaj jeden
  • Dodaje tę wyszukiwarkę w sekcji Edycja CRM.
  • Kliknij na niego, a nie na jego sprzęt, aby go edytować.
  • Zmień nazwę na „Szukaj amazon.co.uk” lub cokolwiek innego
  • Zmień kod na

    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');
    }
    
  • Utwórz kolejny element menu typu skryptu, nazwij go „Mapą Google” lub jakikolwiek inny i koduj w ten sam sposób:

    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
źródło
0

Istnieje rozszerzenie o nazwie „Wyszukiwanie w menu kontekstowym”. Pozwala dodawać do niego adresy URL, a następnie po zaznaczeniu tekstu i kliknięciu jednego z adresów URL przekazuje ten tekst do klikniętego adresu URL.

Na przykład URL wyszukiwania dla YouTube to:

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

gdzie TESTSEARCH to tekst, który chcesz wyszukać. W rozszerzeniu dodajesz ten wiersz, a po naciśnięciu automatycznie zastąpi on TESTSEARCH wybranym tekstem. Możesz oczywiście dodać etykietę dla każdego adresu URL.

Oto link do rozszerzenia.

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

Amjad Abu Saa
źródło
0

Cześć, odkąd udzielono odpowiedzi na główne pytanie, chcę coś wnieść.

Jest to po prostu zmodyfikowany skrypt podobny do wyszukiwania wstecznego obrazu w google, ale przekierowuje imglink.jpg do Jeffrey's Exif Viewer w celu analizy EXIF ​​obrazu.

Dzięki gdejohn .

Łatwo, utwórz 2 pliki, których używałem notatnika, dodaj ikony 16x16, 48x48 i 128x128 (lub usuń linię) i przejdź do chrome: // extensions / zaznacz tryb programisty dodaj folder zawierający pliki.

Nazwa pliku: 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"
}

Nazwa pliku: 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
źródło