Google Restore Underline

Restores underlining to Google title results.

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램을 설치해야 합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name Google Restore Underline
// @namespace GRU
// @description Restores underlining to Google title results.
// @version 125
// @run-at  document-body
// @include http://www.google.*/*
// @include https://www.google.*/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
// @author  drhouse
// @icon    https://cdn1.iconfinder.com/data/icons/company-identity/100/new-google-favicon-128.png
// ==/UserScript==

$(document).ready(function () {
    // Target h3 elements within the main search results area
    // Using multiple selectors to cover different Google layouts
    $('#search h3, #rso h3, main h3, #res h3, #botstuff h3').css('text-decoration', 'underline');

    // Use MutationObserver to handle dynamically loaded content (infinite scroll, etc.)
    const observer = new MutationObserver(function(mutations) {
        $('#search h3, #rso h3, main h3, #res h3, #botstuff h3').css('text-decoration', 'underline');
    });

    const searchContainer = document.querySelector('#search, #rso, main, #res');
    if (searchContainer) {
        observer.observe(searchContainer, { childList: true, subtree: true });
    }
});