Google Fixed Tab Order

Stops google from reordering the tabs like wtf are you doing you piece of shit, stolen from https://productforums.google.com/forum/#!topic/websearch/rWuCGv4OluA

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name        Google Fixed Tab Order
// @namespace   google.com
// @description Stops google from reordering the tabs like wtf are you doing you piece of shit, stolen from https://productforums.google.com/forum/#!topic/websearch/rWuCGv4OluA
// @include     https://www.google.com/search?*
// @include     https://www.google.com/webhp?*
// @version     2.0
// @grant       none
// ==/UserScript==

(function ()
{
	var order = ["All", "Web", "Images", "Videos", "News", "Maps", "Books", "Apps", "Shopping", "Flights"];

	function observerEnable()
	{
		observer.observe(document.querySelector("#main"), { childList: true, subtree: true });
	}
	function observerDisable()
	{
		observer.disconnect();
	}
	var observer = new MutationObserver(function(mutations)
	{
		observerDisable();
		fixTabs();
		observerEnable();
	});
	observerEnable();
	
	function fixTabs()
	{
		var parent = document.querySelector("#hdtb-msb");
		if (parent == null)
			return;

		var tabs = parent.querySelectorAll(".hdtb-mitem");

		var more = document.querySelector("#hdtb-more");
		var tools = document.querySelector("#hdtb-tls");

		while (parent.firstChild)
			parent.removeChild(parent.firstChild);

		for (var i = 0; i < order.length; i++)
			for (var t = 0; t < tabs.length; t++)
				if (order[i] == tabs[t].textContent)
					parent.appendChild(tabs[t]);
					
		parent.appendChild(tools);
	}
	fixTabs();
})();