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
, 따라서 당신이에 위의 코드를 묶어야 할 필요가 없습니다, 로컬 선언이없는 인생 .
불행한 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 년 10 월 업데이트 :
Google 페이지에서 마크 업이 변경되었으므로 h3.r
로 변경해야했습니다 div.r
.
나는 멀리 가서 교체 h3.r > a
와 함께 #res .r > a
(그냥 "을 .class"로 대체 "tag.class", 셀렉터가 너무 일반적되지 않도록 보안으로 부모를 추가).