Jak wyłączyć przekierowanie linku wyników wyszukiwania Google (po kliknięciu prawym przyciskiem myszy) w Chrome?


22

Po zalogowaniu do Google wyniki wyszukiwania Google są przekierowywane (w celu śledzenia itp.). Jest to denerwujące, ponieważ nie jest łatwo skopiować / wkleić adres URL bez odwiedzania strony. Jeśli nie byłoby przekierowania, wystarczy kliknąć prawym przyciskiem myszy link w wynikach wyszukiwania i wybrać „Kopiuj adres linku”. Teraz jest zmieniany przez kod Google JavaScript, który monitoruje kliknięcie prawym przyciskiem.

Jak można to wyłączyć w Chrome? Myślę, że kiedyś było do tego rozszerzenie Chrome, ale wydaje się, że już nie działa.


Jaki jest cel twojego kliknięcia prawym przyciskiem?
Beniamin

4
@Beniamin: jak powiedziałem w moim pytaniu: „skopiuj [wklej] adres URL”. Chcę tylko uzyskać adres URL (np. Do wklejenia w raporcie itp.)
Rabarberski

4
FYI: Po prostu zaznaczenie tekstu kursorem i naciśnięcie ctrl-c nie zawsze jest opcją, ponieważ Google łączy długie adresy URL
Rabarberski

Dobrze. Ale kiedy klikniesz link prawym przyciskiem myszy, zmieni się on w link śledzenia Google. Więc nie dostaniesz tego linku, chyba że otworzysz stronę, Google przekieruje Cię na żądaną stronę i będziesz miał to, czego chcesz.
Beniamin

2
Pytanie dotyczy tego, jak tego uniknąć. (wcześniej było jakieś rozszerzenie chrome (już nie działa) i trochę skryptu fatmonkey dla Firefoxa, ale kiedy ostatnio sprawdziłem, miałem z tym pewne problemy. Więc mówiąc: „nie dostaniesz tego linka, chyba że otworzysz stronę” nie ma sensu).
Rabarberski

Odpowiedzi:


7

Teraz, gdy wiem, czego chciałeś, napisałem mały skrypt, który usuwa onmousedownatrybut z linku.

Oto on:

// ==UserScript==
// @name           Delete onmousedown
// @namespace      google
// @include        http://www.google.*/*
// ==/UserScript==
var runOnce = function(){
    var items = document.querySelectorAll('li.g h3.r a');
    for(var i = 0, len = items.length; i< len; i++){
        items[i].removeAttribute('onmousedown');
    }
}
document.body.appendChild(document.createElement("script")).innerHTML = "("+runOnce+")()";

Zapisz go jako plik z rozszerzeniem .user.js i upuść w Google Chrome i daj mi znać, czy to pomogło.

PS. Angielski nie jest moim językiem mówionym, więc przepraszam za nieporozumienie.

Edycja: dodałem dodatkową logikę, aby działała z wyszukiwaniem dynamicznym Google. Powiedz mi, czy to działa dla ciebie.

Edycja: przywróciłem wersję „bez” obsługi dynamicznej Google.


Dzięki za wysiłek. Próbowałem jednak czegoś podobnego, gdy przeciągam plik skryptu przez Chrome, jest on otwierany w przeglądarce, wyświetlając kod źródłowy zamiast instalować skrypt.
Rabarberski

Spróbuj Ctrl + O, aby otworzyć plik. I czy na pewno nazwałeś go tak: google.user.js?
Beniamin

Przeczytałem, że okno chromowane należy zmaksymalizować.
Beniamin

Lub zainstaluj jakieś chrome-podobne rozszerzenie w chrome. Pomoże to zainstalować skrypty i skrypty fatmonkey powinny działać. Na przykład: chrome.google.com/webstore/detail/…
Beniamin

1
@Rabarberski, musisz przestać korzystać z wyszukiwania dynamicznego Google.
Synetech


3

Jeśli korzystasz z przeglądarki Firefox , masz szczęście, ponieważ dotyczy Ciebie poniższa odpowiedź. Jeśli używasz Chrome, masz dużo mniej szczęścia, patrz na dole tej odpowiedzi.

Greasemonkey uruchamia skrypty użytkownika po załadowaniu DOM , więc nie trzeba implementować detektora „DOM ready”.

Jesteś także w przeglądarce Firefox, więc możesz użyć nowoczesnych cukierków: for...of, let.

Oto wynikowy skrypt Greasemonkey:

// ==UserScript==
// @name        Remove Google redirects
// @namespace   google
// @description Remove redirects from Google Search result links.
// @include     https://www.google.*/*
// @version     1
// @grant       none
// ==/UserScript==

for (let element of document.querySelectorAll('#res .r > a')) {
    element.removeAttribute('onmousedown');
}

Dzięki temu letnie ma lokalnych deklaracji, dlatego nie trzeba umieszczać powyższego kodu w IIFE .


Dla niefortunnych użytkowników Chrome (Tampermonkey):

W czasie wykonywania skryptu nie znaleziono linków, mimo że document.readyState === 'complete'… w rezultacie musisz zaimplementować pętlę z timerem.

Dlatego kończysz na:

// ==UserScript==
// @name        Remove Google redirects
// @namespace   google
// @description Remove redirects from Google Search result links.
// @include     https://www.google.*/*
// @version     1
// @grant       none
// ==/UserScript==

(function removeGoogleRedirects() {

    var links = document.querySelectorAll('#res .r > a');

    if (links.length === 0) {
        setTimeout(removeGoogleRedirects, 100);
        return;
    }

    for (var link of links) {
        link.removeAttribute('onmousedown');
    }

})();

Aktualizacja z października 2018 r .:
Ze względu na zmianę znaczników na stronie Google h3.rnależy zmienić na div.r.
Poszedłem dalej i zastąpione h3.r > az #res .r > a(zastąpiony „tag.class” z zaledwie „Klasy” i dodał rodzica jako zabezpieczenie tak, że selektor nie jest zbyt ogólne).


Przeniesienie tekstu skryptu Firefoksa i dodanie na początku „javascript:”, a następnie zrobienie z niego zakładki (odpowiedź a la bobobobo) działało dla mnie świetnie.
ojchase


0

Najłatwiej jest uruchomić ten skryptlet. Skopiuj i przeciągnij go na pasek zakładek i kliknij go, zanim klikniesz prawym przyciskiem myszy dowolny z wyników wyszukiwania.

javascript: var items = document.getElementsByTagName('a');  for( var i = 0 ; i < items.length; i++ )  if( items[i].className=='l' )  items[i].onmousedown = null ;

Boże, ci ludzie są szatanem, ale zaktualizowałem skrypt, który dał Beniamin, działa na dzień tego postu. Użytkownik ten trik na lekki upewnić, załadowaniu strony przed odpędzania do elementów ich zdarzeń mouseDown. Musisz użyć TamperMonkey, aby to zadziałało.

// ==UserScript==
// @name           Delete onmousedown
// @namespace      google
// @version        0.1
// @description    Allows you to right click links on Google search results without having them mangled on you.
// @include          http://www.google.*/*
// ==/UserScript==
var tid = setInterval( function () {
    if ( document.readyState !== 'complete' ) return;

    var items = document.getElementsByTagName('a');

    var succeeded=false;
    for( var i = 0 ; i < items.length; i++ )
    {
      if( items[i].className=='l' )
      {
        if( items[i].onmousedown ) { succeeded=true; } // we stripped the urls
        items[i].onmousedown = null ;
      }
    }

    if( succeeded )  clearInterval( tid ); // stop invoking this routine when we succeeded.
}, 100 );
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.