Google Search Terms Highlight

Automatically highlights search terms & full phrases in pages opened by Google search results.

目前为 2015-08-21 提交的版本。查看 最新版本

// ==UserScript==
// @name         Google Search Terms Highlight
// @namespace    GSTH
// @version      1.0
// @run-at       document-start
// @description  Automatically highlights search terms & full phrases in pages opened by Google search results.
// @include      *
// @grant        GM_getValue
// @grant        GM_setValue
// @require      http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
// @icon         https://www.google.ca/images/google_favicon_128.png
// @author       drhouse
// ==/UserScript==

$(document).ready(function () {

	var ref = document.referrer;

	if (location.href.toString().indexOf("https://www.google.") == -1 && ref.indexOf("https://www.google.") != -1){	
		var gsearchmark = GM_getValue("googleSearchTerm", "");
		var tokens = [].concat.apply([], gsearchmark.split('"').map(function(v,i){
			return i%2 ? v : v.split(' ')
		})).filter(Boolean);
		var oldre = /(?:^|\b)(xx)(?=\b|$)/;

		var keys = $.map( tokens, function( value, key ) {
			function newre(e){
				return RegExp(e.toString().replace(/\//g,"").replace(/xx/g, value), "i")
			};

			walk(document.body, newre(oldre));

		});

		function walk(node, targetRe) {
			var child;

			switch (node.nodeType) {
				case 1: // Element
					for (child = node.firstChild;
						 child;
						 child = child.nextSibling) {
						walk(child, targetRe);
					}
					break;

				case 3: // Text node
					handleText(node, targetRe);
					break;
			}
		}

		function handleText(node, targetRe) {
			var match, targetNode, followingNode, wrapper;
			match = targetRe.exec(node.nodeValue);
			if (match) {
				targetNode = node.splitText(match.index);
				followingNode = targetNode.splitText(match[0].length);
				wrapper = document.createElement('span');
				$(wrapper).css('background-color', 'yellow');
				targetNode.parentNode.insertBefore(wrapper, targetNode);
				wrapper.appendChild(targetNode);

				if (node.nodeValue.length == 0) {
					node.parentNode.removeChild(node);
				}
				if (followingNode.nodeValue.length == 0) {
					followingNode.parentNode.removeChild(followingNode);
				}
				match = followingNode
				? targetRe.exec(followingNode.nodeValue)
				: null;
			}
		}
	}

	if (location.href.toString().indexOf("https://www.google.") != -1 && location.href.toString().indexOf("/search") != -1){	
		var googleSearchTerm = $("#lst-ib").val();
		GM_setValue("googleSearchTerm", googleSearchTerm);
	}	
});

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址