Greasy Fork is available in English.

Кнопка «Искать в Яндекс» 2

Альтернативный поиск Google: добавляет кнопку для поиска запроса в Яндекс на странице поисковой выдачи Google.

// ==UserScript==
// @name        Кнопка «Искать в Яндекс» 2
// @description Альтернативный поиск Google: добавляет кнопку для поиска запроса в Яндекс на странице поисковой выдачи Google.
// @namespace   2k1dmg@userscript
// @license     GPL version 3 or any later version; http://www.gnu.org/copyleft/gpl.html
// @version     0.2.4
// @author      2k1dmg
// @grant       none
// @match       *://www.google.ru/*
// @match       *://www.google.com/*
// @match       *://www.google.by/*
// @match       *://www.google.kz/*
// @match       *://www.google.com.ua/*
// @match       *://www.google.com.tr/*
// @match       *://www.google.am/*
// @match       *://www.google.az/*
// @match       *://www.google.ee/*
// @match       *://www.google.fi/*
// @match       *://www.google.ge/*
// @match       *://www.google.kg/*
// @match       *://www.google.lt/*
// @match       *://www.google.lv/*
// @match       *://www.google.md/*
// @match       *://www.google.tm/*
// @match       *://www.google.co.uz/*
// @match       *://www.google.de/*
// ==/UserScript==

// 2015-03-31

(function(window) {
	'use strict';
	if (!window || (window && window.self !== window.top))
		return;

	var document = window.document;

	var gbBox = document.querySelector('#sbds');
	if (!gbBox)
		return;

	var onClick = function() {
		// домены Яндекса: ru, ua, by, kz, com, com.tr
		var subdomain = '',
		tld = /*'com'*/'ru',
		tlds = [/*'ru', */'ua', 'by', 'kz', 'tr'],
		ex_com = ['tr'],
		fixTld, url, win, searchText, searchInput;
		searchInput = document.querySelector('#lst-ib');
		if (searchInput && searchInput.value) {
			searchText = document.querySelector('#lst-ib').value;
		}
		else {
			return;
		}
		if (document.querySelector('#qbi'))
			subdomain = 'images.';
		try {
			fixTld = document.domain.match(/^www\.google\.(com?\.)?([a-z]+)$/)[2];
			if (tlds.indexOf(fixTld) !== -1) {
				tld = fixTld;
				if (ex_com.indexOf(tld) !== -1)
					tld = tld.replace(/(\w{2})/, 'com.$1');
			}
		}
		catch (ex) {};
		url = 'https://' + subdomain + 'yandex.' + tld + '/yandsearch?text=' +
			encodeURIComponent(searchText);
		win = window.open(url, '_blank');
	};

	var addButton = function() {
		var cssStyle = document.createElement('style');
		cssStyle.type = 'text/css';
		cssStyle.textContent = [
			'#sbds > * {',
			'	display: inline-block;',
			'	vertical-align: top;',
			'}',
			'#gbqfb2 {',
			'	color: #000;',
			'	border: 1px solid #3079ED;',
			'	border-radius: 2px;',
			'	background-color: #4D90FE;',
			'	background-image: -moz-linear-gradient(center top , #4D90FE, #4787ED);',
			'	background-image: linear-gradient(center top , #4D90FE, #4787ED);',
			'	font-size: 1em;',
			'	font-weight: bold;',
			'	height: 30px;',
			'}',
			'#gbqfb2:hover {',
			'	background-color:#357ae8;',
			'	background-image: -moz-linear-gradient(top,#4d90fe,#357ae8);',
			'	background-image: linear-gradient(top,#4d90fe,#357ae8);',
			'	border:1px solid #2f5bb7;',
			'}',
			'#gbqfb2 > .yandex-button-white {',
			'	color: #fff;',
			'}',
			'#gbqfb2 > .yandex-button-red {',
			'	color: hsl(0, 100%, 65%);',
			'}'
		].join('\n');
		document.head.appendChild(cssStyle);

		var localPage = (function() {
			var pageLangRU = (document.domain.match(/\w+$/)[0] === 'ru') ? true : false;
			var y = 'Я';
			var andex = 'ндекс';
			if (!pageLangRU) {
				y = 'Y';
				andex = 'andex';
			}
			return {
				y: y,
				andex: andex
			};
		})();

		var buttonBox = document.createElement('div');
		buttonBox.innerHTML = [
			'<button id="gbqfb2" aria-label="Поиск в Яндекс" name="btnY">',
				'<span class="yandex-button-red">' + localPage.y + '</span>',
				'<span class="yandex-button-white">' + localPage.andex + '</span>',
			'</button>'
		].join('');

		var button = buttonBox.querySelector('#gbqfb2');
		button.onclick = onClick;

		gbBox.appendChild(buttonBox);
	};

	if (document.readyState === 'complete') {
		addButton();
	}
	else {
		window.addEventListener('load', function pageLoaded(e) {
			window.removeEventListener('load', pageLoaded, false);
			addButton();
		}, false);
	}
})(window);