改进一下 Google Search Language Select脚本

今天还真闲,看了下userscripts.
发现这个 Google Search Language Select 还真不错,可以切换查询结果的语言




但是没有中文的菜单,手多给加了一个

// ==UserScript==
// @name         Google Search Language Select
// @namespace    Yamamaya
// @description  You can select language options.
// @include      http://www.google.*/search*
// @include      http://www.google.*/webhp?*
// @version      0.0.2
// ==/UserScript==

(function(){
	evalInPage(function(){
		var GOOGLE = google;
		var LANGUAGE = GOOGLE.kHL;
	
		var googleSearch = {
			init: function(){
				this.createLanguageSelect();
				this.launguageSelectToggle();
				this.formSubmit();
			},
			createLanguageSelect: function(){
				var language = (LANGUAGE === 'ja') && {
					'英語': 'lang_en',
					'スペイン語': 'lang_es',
					'ポルトガル語': 'lang_pt',
					'フランス語': 'lang_fr',
					'イタリア語': 'lang_it',
					'ドイツ語': 'lang_de',
					'ロシア語': 'lang_ru',
					'中国語 簡体': 'lang_zh-CN',
					'中国語 繁体': 'lang_zh-TW',
					'韓国語': 'lang_ko',
					'日本語': 'lang_ja'				
				} 
				|| (LANGUAGE === 'zh-CN') && {
					'英文': 'lang_en',
					'西班牙文': 'lang_es',
					'葡萄牙文': 'lang_pt',
					'法文': 'lang_fr',
					'意大利文': 'lang_it',
					'德文': 'lang_de',
					'俄文': 'lang_ru',
					'简体中文': 'lang_zh-CN',
					'繁体中文': 'lang_zh-TW',
					'韩文': 'lang_ko',
					'日文': 'lang_ja'		
				}
				|| (LANGUAGE === 'zh-TW') && {
					'英文': 'lang_en',
					'西班牙文': 'lang_es',
					'葡萄牙文': 'lang_pt',
					'法文': 'lang_fr',
					'意大利文': 'lang_it',
					'德文': 'lang_de',
					'俄文': 'lang_ru',
					'簡體中文': 'lang_zh-CN',
					'正體中文': 'lang_zh-TW',
					'韓文': 'lang_ko',
					'日文': 'lang_ja'		
				}
				|| {
					'English': 'lang_en',
					'Spanish': 'lang_es',
					'Portuguese': 'lang_pt',
					'French': 'lang_fr',
					'Italian': 'lang_it',
					'German': 'lang_de',
					'Russian': 'lang_ru',
					'Chinese (Simplified)': 'lang_zh-CN',
					'Chinese (Traditional)': 'lang_zh-TW',
					'Korean': 'lang_ko',
					'Japanese': 'lang_ja'				
				};
			
				var point = document.getElementById('prs');
				var a = document.createElement('a');
				with(a.style){
					margin = '0px 20px';
				};
				a.href = '#';
				a.id = 'language_select_toggle';
				a.textContent = 'Language Options';
				point.appendChild(a);
			
				var t = a.offsetTop + 5;
				var l = a.offsetLeft;
				var ul = document.createElement('ul');
				ul.id = 'language_select_ul';
				with(ul.style){
					padding = '10px';
					backgroundColor = '#3274D0';
					position = 'absolute';
					top = t + 'px';
					left = l + 'px';
					zIndex = '9999999';
					visibility = 'hidden';
				};
				for(var i in language){
					var li = document.createElement('li');
					with(li.style){
						listStyle = 'none';
						margin = '5px 0px';
					};
					li.innerHTML = '<input type="radio" value="'+language[i]+'" name="lr"/><label for="lr" style="color: #FFFFFF !important;">'+i+'</label>';
					ul.appendChild(li);
				};
				point = document.getElementsByName('btnG')[0];
				point.parentNode.appendChild(ul);			
			},
			launguageSelectToggle: function(){
				var ul = document.getElementById('language_select_ul');
				var uStyle = ul.style;
				document.addEventListener('click',function(e){
					var target = e.target;
					if(e.button !== 0)
						return;
					if(target.parentNode.id === 'language_select_ul' || target.parentNode.parentNode.id === 'language_select_ul') 
						return;
					if(target.id === 'language_select_toggle'){
						(uStyle.visibility === 'hidden') ? 
							uStyle.visibility = 'visible': uStyle.visibility = 'hidden';
						e.preventDefault();	
					}
					else{
						uStyle.visibility = 'hidden';
					}
				},false);
			}, 
			formSubmit: function(target){
				var form = document.forms[0];
				document.addEventListener('click',function(e){
					if(e.button !== 0) return;
					var target = e.target;
					if(target.id === 'all' || target.id === 'il' || target.name === 'lr' && (target.nodeName.toLowerCase() === 'input')){
						form.submit();
					}		
				},false);
			}
		};
	
		googleSearch.init();	
	});
	
	function evalInPage(f){
		location.href = 'javascript:void('+f+')()';
	};
})();

直接覆盖上去吧, ff3.5.1下测试通过

你可能感兴趣的:(JavaScript,F#,Google,脚本)