Làm cách nào để tắt chuyển hướng liên kết kết quả tìm kiếm của Google (nhấp chuột phải) trong Chrome?


22

Khi đăng nhập vào Google, kết quả tìm kiếm của Google được chuyển hướng (cho mục đích theo dõi, v.v.). Điều này thật khó chịu, vì không dễ để sao chép / dán URL mà không truy cập trang web. Nếu không có chuyển hướng, tôi chỉ cần nhấp chuột phải vào liên kết trong kết quả tìm kiếm và chọn "Sao chép địa chỉ liên kết". Bây giờ nó đã được thay đổi bởi một số mã Google JavaScript để theo dõi nhấp chuột phải.

Làm thế nào điều này có thể bị vô hiệu hóa trên Chrome? Tôi nghĩ đã từng có một tiện ích mở rộng Chrome cho nó, nhưng dường như không hoạt động nữa.


Mục đích nhấp chuột phải của bạn là gì?
Beniamin

4
@Beniamin: như đã nói trong câu hỏi của tôi: "sao chép [dán] URL". Tôi chỉ muốn lấy URL (ví dụ để dán trong báo cáo, v.v.)
Rabarberski

4
FYI: Chỉ cần chọn văn bản bằng con trỏ và nhấn ctrl-c không phải lúc nào cũng là một tùy chọn, vì google ghép các URL dài
Rabarberski

Được. Nhưng khi bạn nhấp chuột phải vào liên kết, nó sẽ thay đổi thành liên kết theo dõi google. Vì vậy, bạn sẽ không nhận được liên kết đó trừ khi bạn mở trang, google sẽ chuyển hướng bạn đến trang mong muốn và bạn sẽ có những gì bạn muốn.
Beniamin

2
Câu hỏi chính xác là làm thế nào để tránh điều đó. (trước đây đã có một số tiện ích mở rộng chrome (không hoạt động nữa) và một số tập lệnh greasemonkey cho firefox, nhưng lần trước tôi đã kiểm tra tôi có một số vấn đề với điều đó. Vì vậy, hãy nói rằng "bạn sẽ không nhận được liên kết đó trừ khi bạn mở trang" không có ý nghĩa).
Rabarberski

Câu trả lời:


7

Bây giờ khi tôi biết bạn muốn gì, tôi đã viết một đoạn script nhỏ xóa onmousedownthuộc tính khỏi liên kết.

Đây là:

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

Lưu nó dưới dạng một số tệp kết thúc bằng .user.js và thả nó trên Google Chrome và cho tôi biết nếu nó giúp.

Tái bút Tiếng Anh không phải là ngôn ngữ nói của tôi vì vậy xin lỗi vì đã hiểu lầm bạn.

Chỉnh sửa: Tôi đã thêm logic bổ sung để nó hoạt động với Google Instant. Hãy cho tôi biết nếu nó làm việc cho bạn.

Chỉnh sửa: Tôi đã quay lại phiên bản "không có" hỗ trợ Google Instant.


Cảm ơn cho những nỗ lực. Tôi đã thử một cái gì đó tương tự, tuy nhiên, khi tôi kéo tệp tập lệnh qua Chrome, nó được mở trong trình duyệt, hiển thị mã nguồn thay vì cài đặt tập lệnh.
Rabarberski

Hãy thử Ctrl + O để mở tệp. Và bạn có chắc chắn rằng bạn đã đặt tên cho nó một cái gì đó như: google.user.js?
Beniamin

Và tôi đã đọc rằng cửa sổ chrome cần phải được tối đa hóa.
Beniamin

Hoặc cài đặt một số tiện ích mở rộng giống như greasemonkey trong chrome. Nó sẽ giúp bạn cài đặt các tập lệnh và tập lệnh greasemonkey sẽ hoạt động. Ví dụ: chrome.google.com/webstore/detail/ từ
Beniamin

1
@Rabarberski, sau đó bạn sẽ phải ngừng sử dụng Google Instant.
Synetech


3

Nếu bạn đang sử dụng Firefox , bạn thật may mắn vì câu trả lời sau đây áp dụng cho bạn. Nếu bạn đang sử dụng Chrome, bạn sẽ kém may mắn hơn nhiều, hãy xem phần dưới của câu trả lời này.

Greasemonkey kích hoạt các tập lệnh người dùng sau khi DOM được tải , do đó bạn không cần phải thực hiện trình nghe "DOM ready".

Ngoài ra bạn đang ở trên Firefox, vì vậy bạn có thể sử dụng một số kẹo hiện đại: for...of, let.

Đây là tập lệnh Greasemonkey kết quả:

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

Nhờ letkhông có khai báo cục bộ, do đó bạn không cần phải gửi mã ở trên trong IIFE .


Đối với người dùng Chrome (Tampermonkey) không may :

Các liên kết không được tìm thấy tại thời điểm tập lệnh được thực thi, mặc dù document.readyState === 'complete'kết quả là bạn phải thực hiện một số vòng lặp với bộ đếm thời gian.

Do đó, bạn kết thúc với:

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

})();

Cập nhật tháng 10 năm 2018:
Do thay đổi đánh dấu trong trang Google, h3.rcần phải thay đổi thành div.r.
Tôi đã đi xa hơn và thay thế h3.r > abằng #res .r > a(thay thế "tag. Class" chỉ bằng ". Class" và thêm cha mẹ làm bảo mật để bộ chọn không quá chung chung).


Lấy văn bản của tập lệnh Firefox và thêm 'javascript:' vào đầu tập lệnh và sau đó tạo một bookmarklet của nó (câu trả lời của một bobobobo) rất tốt cho tôi.
ojchase


0

Tôi thấy scriptlet này dễ chạy nhất. Sao chép và kéo nó vào thanh dấu trang của bạn và nhấp vào nó trước khi nhấp chuột phải vào bất kỳ liên kết kết quả tìm kiếm nào.

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

Chúa những người này là satan nhưng tôi đã cập nhật kịch bản Beniamin đưa ra, hoạt động kể từ ngày đăng bài này. Sử dụng thủ thuật này để làm nhẹ đảm bảo trang đã được tải trước khi tước một phần tử của các sự kiện sắp xếp của chúng. Phải sử dụng TamperMonkey để thực hiện công việc này.

// ==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 );
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.