Як відключити переадресацію посилання на результат пошуку Google (натискаючи правою кнопкою миші) у Chrome?


22

Після входу в Google результати пошуку Google переспрямовуються (для цілей відстеження тощо). Це дратує, оскільки скопіювати / вставити URL-адресу, не відвідуючи сайт, непросто. Якщо переадресації не буде, я просто клацніть правою кнопкою миші на посилання в результатах пошуку та виберіть "Скопіювати адресу посилання". Тепер це змінено кодом JavaScript JavaScript, який відстежує правою кнопкою миші.

Як це можна відключити в Chrome? Я думаю, що для цього раніше було розширення для Chrome, але, здається, більше не працює.


Яка мета клацання правою кнопкою миші?
Беніамін

4
@Beniamin: як сказано в моєму запитанні: "скопіювати [вставити] URL-адресу". Я просто хочу отримати URL-адресу (наприклад, для вставки у звіт тощо)
Рабарберскі,

4
FYI: Вибір тексту курсором та натискання клавіш ctrl-c не завжди є варіантом, тому що Google об'єднує довгі URL-адреси
Рабарберські,

Добре. Але коли ви клацніть правою кнопкою миші на посилання, вона змінюється на посилання для відстеження google. Таким чином, ви не отримаєте це посилання, якщо ви не відкриєте сторінку, google перенаправить вас на потрібну сторінку, і ви отримаєте те, що хочете.
Беніямін

2
Питання саме в тому, як цього уникнути. (раніше було якесь хромоване розширення (більше не працює), а також якийсь сценарій жирмейкі для firefox, але останній раз я перевірив, що у мене виникли деякі проблеми з цим. Тому, кажучи, "ви не отримаєте це посилання, якщо не відкриєте сторінку" не має сенсу).
Рабарберські

Відповіді:


7

Тепер, коли я знаю, чого ви хотіли, я написав невеликий сценарій, який видаляє onmousedownатрибут із посилання.

Ось:

// ==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+")()";

Збережіть його як якийсь файл, який закінчується .user.js, і опустіть його на Google Chrome, і повідомте мені, чи допомогло це.

PS. Англійська мова не є моєю розмовною мовою, тому шкода, що вас не зрозуміли.

Редагувати: я додав додаткової логіки, щоб вона працювала з Google Instant. Скажіть, чи працює це для вас.

Редагувати: я повернувся до версії "без" Google Instant підтримки.


Дякую за зусилля. Я спробував щось подібне, проте, коли я перетягую файл сценарію через Chrome, він відкривається в браузері, відображаючи вихідний код, а не встановлюючи сценарій.
Рабарберські

Спробуйте Ctrl + O, щоб відкрити файл. І ви впевнені, що назвали його чимось на зразок: google.user.js?
Беніамін

І я читав, що хромоване вікно потрібно збільшити.
Беніямін

Або встановіть якийсь розширення, подібне до маслянки, в хром. Це допоможе вам встановити сценарії, і сценарії жирмоскій ключі повинні працювати. Наприклад: chrome.google.com/webstore/detail/…
Beniamin

1
@Rabarberski, тоді вам доведеться припинити використання Google Миттєвого пошуку.
Synetech


3

Якщо ви використовуєте Firefox , вам пощастило, оскільки наступна відповідь стосується вас. Якщо ви користуєтеся Chrome, вам пощастило набагато менше, дивіться внизу цієї відповіді.

Greasemonkey запускає сценарії користувачів після завантаження DOM , таким чином, вам не потрібно реалізовувати "DOM Ready" слухача.

Також ви перебуваєте на Firefox, тому ви можете використовувати деякі сучасні цукерки: for...of , let.

Ось отриманий сценарій 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');
}

Завдяки тому, letщо немає місцевих декларацій, тому вам не потрібно додавати вищевказаний код до додавати IIFE .


Для нещасних Chrome (Tampermonkey):

Посилання не знайдено в момент виконання сценарію, навіть незважаючи на це document.readyState === 'complete' … у результаті вам доведеться реалізувати певний цикл із таймером.

Тому ви закінчуєте:

// ==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');
    }

})();

Оновлення жовтня 2018 року:
через зміну розмітки на сторінці Google, її h3.rпотрібно змінити на div.r.
Я пішов далі і замінити h3.r > aз #res .r > a(замінено «tag.class» з просто «.class», і додав батько як безпеку , з тим , що селектор не надто загальний характер ).


Переміщення тексту сценарію Firefox та додавання до нього "javascript:", а потім створення закладок (відповідь а-ля bobobobo) спрацювало для мене чудово.
ойчасе


0

Я вважаю цей сценарій найпростішим у запуску. Скопіюйте та перетягніть його на панель закладок і натисніть на нього, перш ніж клацнути правою кнопкою миші на будь-якому з посилань результатів пошуку.

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

Боже, ці люди сатана, але я оновив сценарій, який дав Беніямін, працює на дату цієї публікації. Користувач цей трюк , щоб переконатися , що легкий завантаження сторінки , перш ніж зскрібши елементи їх MouseDown подій. Потрібно використовувати TamperMonkey, щоб зробити цю роботу.

// ==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 );
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.