Greasy Fork

Greasy Fork is available in English.

searchEngineJump-NextStage

方便的在各个引擎之间跳转。可自定义搜索列表的 NLF 修改版。

当前为 2016-01-22 提交的版本,查看 最新版本

// ==UserScript==
// @name		searchEngineJump-NextStage
// @author		ted423
// @contributor	NLF && ywzhaiqi
// @description	方便的在各个引擎之间跳转。可自定义搜索列表的 NLF 修改版。
// @version		8.1601.21.0
// @exclude		*.mediatek.inc/*
// @exclude		http://tieba.baidu.com/*
// @namespace	http://greasyfork.icu/users/85
// @grant		none
// @run-at		document-end
// ==/UserScript==
(function() {
	'use strict';
	var prefs = {
		openInNewTab: false, //是否在新页面打开.
		hidePrefsBtn: false, //隐藏设置按钮
		hideEnglineLabel: 0, //是否隐藏前几个搜索的文字部分。0:不隐藏,1:根据高度自行判断,2:隐藏
		engineListDataType: 'ted423', //搜索列表默认类型
		iconType: '', //获取 icon 的在线服务的地址类型
		//position: '',//全局搜索条插入的位置:default, left, top
		debug: false
	};
	var engineListData = {
		custom: '',
		ted423: '网页--search\n	Google\n		Google.hk, https://www.google.com.hk/search?q=%s&safe=off, fa-google\n		Google.co.jp,https://www.google.co.jp/search?q=%s&safe=off, fa-google\n	百度, https://www.baidu.com/s?wd=%s, fa-paw\n	360, https://www.haosou.com/s?q=%s\n	bing, https://cn.bing.com/search?q=%s, fa-bing\n	搜狗, https://www.sogou.com/web?query=%s\n	DuckDuckGo, https://duckduckgo.com/?q=%s, fa-duckduckgo\n	Yahoo\n		Yahoo, https://search.yahoo.com/search?p=%s\n		Yahoo(tw), https://tw.search.yahoo.com/search?p=%s\n 		Yahoo.co.jp, https://search.yahoo.co.jp/search?p=%s&aq=-1&x=wrt\n资料--book\n	WIKI\n		ZWIKI, http://zh.wikipedia.org/w/index.php?search=%s&button=&title=Special%3ASearch, fa-wikipedia-w\n		EWIKI, https://en.wikipedia.org/w/index.php?search=%s&button=&title=Special%3ASearch, fa-wikipedia-w\n		JWIKI, http://ja.wikipedia.org/w/index.php?search=%s&button=&title=Special%3ASearch, fa-wikipedia-w\n	百科, http://baike.baidu.com/searchword/?word=%s, fa-paw\n	Scholar, http://scholar.google.com/scholar?hl=zh-CN&q=%s&btnG=&lr=, https://i.imgur.com/hJVSUU5.png\n	学术, http://xueshu.baidu.com/s?wd=%s, fa-paw\n	知乎, https://www.zhihu.com/search?q=%s\n	萌娘百科, http://zh.moegirl.org/index.php?search=%s, https://zh.moegirl.org/favicon.ico\n	Google Book, https://www.google.com/search?q=%s&btnG=%E6%90%9C%E7%B4%A2%E5%9B%BE%E4%B9%A6&tbm=bks&tbo=1&hl=zh-CN&gws_rd=ssl, fa-google\n	开发\n		stackoverflow, https://stackoverflow.com/search?q=%s, https://cdn.sstatic.net/stackoverflow/img/favicon.ico\n		MDN, https://developer.mozilla.org/en-US/search?q=%s,https://developer.cdn.mozilla.net/media/img/favicon32.png\n		github, https://github.com/search?q=%s\n		krugle, http://opensearch.krugle.org/document/search/#query=%s,http://opensearch.krugle.org/media/images/favicon.ico\n		npm, https://www.npmjs.org/search?q=%s, https://i.imgur.com/Ec0WrY8.png\n地图--map\n	百度, http://map.baidu.com/?newmap=1&s=s%26wd%3D%s, fa-paw\n	Google, https://www.google.com/maps/search/%s/, fa-google\n	搜狗, http://map.sogou.com/#lq=%s, https://www.sogou.com/favicon.ico\n	Bing, https://www.bing.com/ditu/?q=%s, fa-bing\n音乐--music\n	天天动听, http://www.dongting.com/#a=searchlist&q=%s\n	Music, http://music.baidu.com/search?key=%s&ie=utf-8&oe=utf-8, fa-paw\n	搜狗, http://mp3.sogou.com/music.so?query=%s, https://www.sogou.com/favicon.ico\n	一听, http://so.1ting.com/all.do?q=%s\n	虾米, http://www.xiami.com/search?key=%s\n	piapro, https://piapro.jp/search/?view=audio&keyword=%s\n	Lyric, http://music.baidu.com/search/lrc?key=%s, fa-paw\n图片--image\n	百度, http://image.baidu.com/search/index?tn=baiduimage&word=%s, fa-paw\n	Google, https://www.google.com.hk/search?tbm=isch&q=%s, fa-google\n	花瓣, https://huaban.com/search/?q=%s\n	Picsearch, http://cn.picsearch.com/index.cgi?q=%s\n	Flickr, https://www.flickr.com/search/?w=all&q=%s, fa-flickr\n	Pixiv, http://www.pixiv.net/search.php?s_mode=s_tag&word=%s\n	dA, https://www.deviantart.com/browse/all/?q=%s, fa-deviantart\n下载--download\n	dmhy, https://share.dmhy.org/topics/list?keyword=%s\n	nyaa\n		nyaa.eu, https://www.nyaa.eu/?page=search&term=%s, https://i292.photobucket.com/albums/mm30/ted423/favicon_zpsdxwbxo6t.png\n		nyaa.se, http://www.nyaa.se/?page=search&term=%s, https://i292.photobucket.com/albums/mm30/ted423/favicon_zpsdxwbxo6t.png\n		sukebei(eu), https://sukebei.nyaa.eu/?page=search&cats=0_0&filter=0&term=%s, https://i292.photobucket.com/albums/mm30/ted423/favicon_zpsdxwbxo6t.png\n		sukebei(se), http://sukebei.nyaa.se/?page=search&cats=0_0&filter=0&term=%s, https://i292.photobucket.com/albums/mm30/ted423/favicon_zpsdxwbxo6t.png\n	kickass, https://kat.cr/usearch/%s/, https://i.imgur.com/uz2GaPN.png\n	BTSOW, http://www.bt2mag.com/search/%s, http://www.bt2mag.com/app/bts/View/img/btsow.com.favicon.ico\n	BTDigg, https://btdigg.org/search?q=%s\n	xiaohx, http://www.xiaohx.net/search?key=%s, http://s.cdn.acgimg.com/xiaohx.com/images/favicon.ico\n	ed2000, https://www.baidu.com/s?wd=%s+site:ed2000.com&ie=utf-8, http://www.biaoqing.com/2000/favicon.ico\n	字幕\n		subom, http://www.subom.net/search/%s\n		sub HD, http://subhd.com/search/%s, fa-subhd\n		射手网(伪), http://sub.makedie.me/sub/?searchword=%s\n网购--cart-arrow-down\n	一淘, http://s.etao.com/search?q=%s\n	京东, https://search.jd.com/Search?keyword=%s&enc=utf-8\n	淘宝, https://s.taobao.com/search?q=%s\n	亚马逊, https://www.amazon.cn/s/ref=nb_ss?keywords=%s\netc--plus-square\n	AMO, https://addons.mozilla.org/zh-CN/firefox/search/?q=%s, fa-firefox\n	汉典, http://www.zdic.net/sousuo/?q=%s&tp=tp3',
	};

	var MAIN_CSS = 'i{\n	vertical-align:initial;\n    color: #333;\n}\n#sej-container:hover{\n	z-index: 999999999999999;\n	opacity: 1.0;\n}\nsejul, sejli {\n	margin: 0;\n	padding: 0;\n	list-style: none outside;\n}\nsejli {\n	display: list-item;\n}\nsejli:hover>sejul {\n	display:block;\n}\nbody>sejul>sejli {\n	float: left;\n}\nsejli sejul {\n	position: absolute;\n}\nsejli sejul sejul {\n	margin-left: 100px;\n	margin-top: -30px;\n}\nsejli sejul .sej-engine {\n	padding: 4px 0px;\n	width:100%;\n}\n#sej-container {\n   background: white;\n	box-shadow:0px 0px 3px #aaaaaa;\n	margin:0 auto;\n	opacity: 0.5;\n	display:table;\n	font-family: Comic Sans MS, "Microsoft YaHei", 微软雅黑;\n	position: relative;\n	padding: 1px 0 1px 10px;\n	line-height: 1.5;\n	font-size: 13px;\n	transition: opacity 0.5s ease-in-out;\n}\n#sej-container>sejli {\n    float: left;\n}\n#sej-expanded-category {\n	display: inline-block;\n	font-weight: bold;\n	padding: 2px 0;\n	line-height: 2;\n}\n#sej-expanded-category::after {\n	content:" :";\n}\n.sej-engine {\n line-height: 2;\n display: inline-block;\n margin: 0;\n border: none;\n padding: 2px 4px;\n text-decoration: none;\n transition: background-color 0.15s ease-in-out;\n}\na.sej-engine{white-space: nowrap;}\na.sej-engine:visited, a.sej-engine:active{\n color: #120886;\n}\na.sej-engine.only-icon {\n	margin-left: 3px;\n	margin-right: 3px;\n}\na.sej-engine.only-icon > span {\n	display: none;\n}\na.sej-engine:link, a.sej-engine:visited {\n	text-decoration: none;\n}\n.sej-drop-list-trigger-shown {\n	background-color: #DEEDFF !important;\n}\n.sej-drop-list-trigger::after {\n	content:\'\';\n	display: inline-block;\n	margin: 0 0 0 3px;\n	padding: 0;\n	width: 0;\n	height: 0;\n	border-top: 6px solid #BCBCBC;\n	border-right: 5px solid transparent;\n	border-left: 5px solid transparent;\n	border-bottom: 0px solid transparent;\n	transition: -webkit-transform 0.3s ease-in-out;\n	transition: transform 0.3s ease-in-out;\n}\n.sej-drop-list-trigger-shown::after {\n	-webkit-transform: rotate(180deg);\n	transform: rotate(180deg);\n}\n.sej-engine:hover {\n	background-color: #EAEAEA;\n}\n.sej-drop-list > .sej-engine {\n	display: block;\n	padding-top: 4px;\n	padding-bottom: 4px;\n}\n.sej-drop-list > .sej-engine:hover {\n	background-color: #DEEDFF;\n}\n.sej-drop-list i,.sej-drop-list img{padding-left:5px;}\n.sej-engine-icon {\n	display: inline-block;\n	height: 16px;\n	border: none;\n	padding: 0;\n	margin: 0 3px 0 0;\n	vertical-align: sub;\n}\n.sej-drop-list {\n	display: none;\n	float: left;\n	min-width: 100px;\n	border: 1px solid #FAFAFA;\n	font-size: 13px;\n	-moz-box-shadow: 2px 2px 5px #ccc;\n	-webkit-box-shadow: 2px 2px 5px #ccc;\n	box-shadow: 2px 2px 5px #ccc;\n	background-color: white;\n}';
	var fontawesome ='@font-face{font-family:"FontAwesome";src:url(data:application/x-font-woff;charset=utf-8;base64,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) format("woff");font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:15px;margin: 0 3px 0 0;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-glass:before{content:"\\f000"}.fa-music:before{content:"\\f001"}.fa-search:before{content:"\\f002"}.fa-gear:before,.fa-cog:before{content:"\\f013"}.fa-download:before{content:"\\f019"}.fa-book:before{content:"\\f02d"}.fa-camera:before{content:"\\f030"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\\f03e"}.fa-twitter-square:before{content:"\\f081"}.fa-facebook-square:before{content:"\\f082"}.fa-camera-retro:before{content:"\\f083"}.fa-github-square:before{content:"\\f092"}.fa-phone-square:before{content:"\\f098"}.fa-twitter:before{content:"\\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\\f09a"}.fa-github:before{content:"\\f09b"}.fa-globe:before{content:"\\f0ac"}.fa-google-plus-square:before{content:"\\f0d4"}.fa-google-plus:before{content:"\\f0d5"}.fa-cloud-upload:before{content:"\\f0ee"}.fa-plus-square:before{content:"\\f0fe"}.fa-github-alt:before{content:"\\f113"}.fa-gamepad:before{content:"\\f11b"}.fa-html5:before{content:"\\f13b"}.fa-youtube-square:before{content:"\\f166"}.fa-youtube:before{content:"\\f167"}.fa-youtube-play:before{content:"\\f16a"}.fa-dropbox:before{content:"\\f16b"}.fa-stack-overflow:before{content:"\\f16c"}.fa-flickr:before{content:"\\f16e"}.fa-tumblr:before{content:"\\f173"}.fa-tumblr-square:before{content:"\\f174"}.fa-weibo:before{content:"\\f18a"}.fa-renren:before{content:"\\f18b"}.fa-pagelines:before{content:"\\f18c"}.fa-stack-exchange:before{content:"\\f18d"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\\f19d"}.fa-yahoo:before{content:"\\f19e"}.fa-google:before{content:"\\f1a0"}.fa-delicious:before{content:"\\f1a5"}.fa-language:before{content:"\\f1ab"}.fa-paw:before{content:"\\f1b0";border: solid 1px;padding: 1px 1px 0 1px;}.fa-steam:before{content:"\\f1b6"}.fa-steam-square:before{content:"\\f1b7"}.fa-deviantart:before{content:"\\f1bd"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\\f1c5"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\\f1d4"}.fa-tencent-weibo:before{content:"\\f1d5"}.fa-qq:before{content:"\\f1d6"}.fa-send:before,.fa-paper-plane:before{content:"\\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\\f1d9"}.fa-skyatlas:before{content:"\\f216"}.fa-cart-plus:before{content:"\\f217"}.fa-cart-arrow-down:before{content:"\\f218"}.fa-facebook-official:before{content:"\\f230"}.fa-wikipedia-w:before{content:"\\f266"}.fa-firefox:before{content:"\\f269"}.fa-amazon:before{content:"\\f270"}.fa-map:before {content: "\\f279";}.fa-subhd:before {content: "\\f8fd";}.fa-bing:before{content: "\\f8fe";border: solid 1px;padding: 0.5px;}.fa-duckduckgo:before {content: "\\f8ff";}';

	var categoryMap = { //rules 和 engineList 的对应
		'web': '网页',
		'map': '地图',
		'video': '视频',
		'music': '音乐',
		'image': '图片',
		'knowledge': '资料',
		'sociality': '社交',
		'shopping': '网购',
		'download': '下载',
	};

	function isTheSameCategory(c1, c2) {
		return (categoryMap[c1] || c1) == (categoryMap[c2] || c2);
	}

	var rules = [ //根据规则把搜索引擎列表插入到指定网站
		// 网页,第一个可以当模板看
		{
			name: "google网页搜索", //你要加载的网站的名字(方便自己查找)
			url: /^https?:\/\/(encrypted\.google\.com|www\.google\.(?!co\.jp)[^\/]{2,9})\/(webhp|search|#|$|\?)(?!.*tbm=)/, //在哪个网站上加载,正则.
			change: 'mutationTitle', //mutationTitle监视标题的变化,runAtComplete在页面结束时执行
			engineList: 'web', //加载哪个类型的列表:
			style: '\
			width:100%;\
			padding-left: 15px;\
			top: -3px;\
			', //给引擎列表的样式
			// 插入文档,相关
			// target 将引擎跳转工具栏插入到文档的某个元素
			// (请使用css匹配,比如: '#subform_ctrl' );
			// keyword 使用 css选中一个form input元素 或者 该项是一个函数,使用返回值
			// where 四种:
			// 'beforeBegin'(插入到给定元素的前面) ;
			// 'afterBegin'(作为给定元素的第一个子元素) ;
			// 'beforeEnd' (作为给定元素的最后一个子元素) ;
			// 'afterEnd'(插入到给定元素的后面);.
			insertIntoDoc: {
				target: '#top_nav',
				where: 'beforeBegin',
			},
			stylish: '', //自定义样式
		}, {
			name: "google.co.jp",
			url: /^https?:\/\/www\.google\.co\.jp\/(webhp|search|#|$|\?)(?:.(?!&tbm=))*$/,
			change: 'mutationTitle',
			engineList: 'web',
			style: '\
			width:100%;\
			padding-left: 15px;\
			top: -3px;\
			',
			insertIntoDoc: {
				target: '#top_nav',
				where: 'beforeBegin',
			},
		}, {
			name: "baidu 网页搜索",
			url: /^https?:\/\/www\.baidu\.com\/(?:s(?!.*tn=baidulocal).*|baidu(?!.*tn=baidulocal).*|)$/,
			change: 'mutationTitle',
			engineList: 'web',
			style: '\
			margin-left: 122px;\
			',
			insertIntoDoc: {
				target: '#container',
				where: 'beforeBegin',
			},
		}, {
			name: "baidu 简洁搜索", //百度简洁搜索:https://www.baidu.com/s?wd=firefox&ie=utf-8&tn=baidulocal
			url: /^https?:\/\/www\.baidu\.com\/s\?.*tn=baidulocal/,
			engineList: 'web',
			style: '\
			border-top:1px solid #D9E1F7;\
			border-bottom:1px solid #D9E1F7;\
			margin-left: 122px;\
			',
			insertIntoDoc: {
				target: 'table[bgcolor="#e6e6e6"]',
				where: 'beforeBegin',
			},
		}, {
			name: "必应网页搜索",
			url: /^https?:\/\/[^.]*\.bing\.com\/search/,
			engineList: 'web',
			style: '\
			border-collapse:separate;\
			border-top: 1px solid #E6E6E6;\
			border-bottom: 1px solid #E6E6E6;\
			margin-left: 10px;\
			',
			insertIntoDoc: {
				target: '#b_header',
				where: 'beforeEnd',
			},
			stylish: '#b_content{ padding: 10px 0px 20px 100px !important; } .b_underSearchbox{margin:5px 20px 0px;}'
		}, {
			name: "360搜索",
			url: /^https?:\/\/www\.haosou\.com\/s\?/,
			engineList: 'web',
			style: '\
			border-bottom: 1px solid #E0E0E0;\
			border-top: 1px solid #E0E0E0;\
			margin-left: 20px;\
			',
			insertIntoDoc: {
				target: '#header',
				where: 'afterEnd',
			},
		}, {
			name: "搜狗网页搜索",
			url: /^https?:\/\/www\.sogou\.com\/(?:web|s)/,
			engineList: 'web',
			style: "\
			margin-bottom: 10px;\
			margin-left: 35px;\
			",
			insertIntoDoc: {
				target: '#wrapper',
				where: 'beforeBegin',
			},
			stylish: '.header{ margin-bottom: 5px; }'
		}, {
			name: "雅虎网页搜索",
			url: /^https?:\/\/search\.yahoo\.com\/search/,
			engineList: '网页',
			style: "\
			margin-left: 15px;\
			border-top:1px solid #D4E9F7;\
			border-bottom:1px solid #D4E9F7;\
			",
			insertIntoDoc: {
				target: '#hd',
				where: 'afterEnd'
			},
			stylish: '#doc #sticky-hd ~ #bd {margin-top: 110px;}'
		}, {
			name: "tw.yahoo",
			url: /^https?:\/\/tw\.search\.yahoo\.com\/search/,
			engineList: '网页',
			style: "\
			margin-left:15px;\
			margin-top:5px;\
			border-top:1px solid #D4E9F7;\
			border-bottom:1px solid #D4E9F7;\
			",
			insertIntoDoc: {
				target: '#sticky-hd',
				where: 'beforeEnd'
			},
			stylish: '#bd {margin-top: 105px!important;}'
		}, {
			name: "yahoo.co.jp",
			url: /^https?:\/\/search\.yahoo\.co\.jp\/search/,
			engineList: '网页',
			insertIntoDoc: {
				target: '#ygma',
				where: 'afterEnd'
			},
		}, {
			name: "duckduckgo",
			url: /^https?:\/\/duckduckgo\.com\/\?/,
			engineList: '网页',
			style: "\
			margin-left:15px;\
			border:1px solid #D4E9F7;\
			",
			insertIntoDoc: {
				target: '#zero_click_wrapper',
				where: 'afterEnd'
			},
		},
		// 知识
		{
			name: "谷歌学术",
			url: /^https?:\/\/scholar\.google(?:\.\D{1,3}){1,2}\/scholar\?/,
			engineList: "资料",
			style: '\
			border-bottom:1px solid #E5E5E5;\
			border-top:1px solid #E5E5E5;\
			z-index:999;\
			position:relative;\
			',
			insertIntoDoc: {
				target: '#gs_ab',
				where: 'beforeBegin'
			}
		}, {
			name: "百度学术",
			url: /^https?:\/\/xueshu\.baidu\.com\/s\?/,
			engineList: '资料',
			style: '\
			border-bottom:1px solid #D9E1F7;\
			',
			insertIntoDoc: {
				target: '#head',
				where: 'afterEnd',
			},
			stylish: '#container{padding-top: 130px !important;}'
		}, {
			name: "百度百科",
			url: /^https?:\/\/baike\.baidu\.com\/(search|view|subview)/,
			engineList: "资料",
			style: "\
			z-index: 999999;\
			",
			insertIntoDoc: {
				target: '.header-wrapper',
				where: 'afterEnd',
			},
		}, {
			name: "萌娘百科",
			url: /^https?:\/\/zh\.moegirl\.org\/./,
			engineList: "资料",
			style: "\
			z-index: 999999;\
			",
			insertIntoDoc: {
				keyword: function() {
					if (document.getElementById('searchText')) return document.getElementById('searchText').value;
					else return document.getElementById('firstHeading').textContent;
				},
				target: '#content',
				where: 'afterBegin',
			},
		}, {
			name: "google book",
			url: /^https?:\/\/www\.google\.co.{1,3}\/search\?.*(&btnG=%E6)|(tbm=bks)/,
			change: 'mutationTitle',
			engineList: '资料',
			style: '\
			border-bottom: 1px solid #E5E5E5;\
			border-top: 1px solid #E5E5E5;\
			width:100%;\
			padding-left: 15px;\
			',
			insertIntoDoc: {
				target: '#top_nav',
				where: 'beforeBegin',
			},
		}, {
			name: "互知识",
			url: /^https?:\/\/[a-z]{2,3}\.baike\.com\/[a-z]/,
			engineList: "资料",
			style: '\
			position:fixed;\
			top:80px;\
			right:2%;\
			width:90px;\
			z-index:99;\
			',
			insertIntoDoc: {
				keyword: function() {
					var input;
					if (document.getElementsByClassName('ac_input')[0] != undefined) {
						if (document.getElementsByClassName('ac_input')[0].value != "")
							input = document.getElementsByClassName('ac_input')[0].value;
						else if (document.getElementsByClassName('blue')[0].innerHTML != "") input = document.getElementsByClassName('blue')[0].innerHTML;
						else input = document.evaluate("//h1", document, null, 9, null).singleNodeValue.innerHTML;
					} else if (document.getElementsByClassName('blue')[0].innerHTML != "") input = document.getElementsByClassName('blue')[0].innerHTML;
					else input = document.evaluate("//h1", document, null, 9, null).singleNodeValue.innerHTML;
					return input;
				},
				target: 'body',
				where: 'afterbegin'
			}
		}, {
			name: "wiki",
			url: /^https?:\/\/..\.wikipedia\.org\/w\/index\.php(?!.*\?search=)/,
			engineList: "资料",
			style: '\
			border-top:1px solid #D9E1F7;\
			border-bottom:1px solid #D9E1F7;\
			margin-top:5px;\
			',
			insertIntoDoc: {
				target: '#siteNotice',
				where: 'beforeBegin'
			}
		}, {
			name: "wiki[ZH]",
			url: /^https?:\/\/zh\.wikipedia\.org\/(?:zh|wiki\/|w\/index.php\?search=)/,
			engineList: "资料",
			style: '\
			border-top:1px solid #D9E1F7;\
			border-bottom:1px solid #D9E1F7;\
			margin-top:5px;\
			',
			insertIntoDoc: {
				keyword: function() {
					if (document.getElementById('searchText'))
						return document.getElementById('searchText').value;
					else return document.getElementById('firstHeading').childNodes[0].textContent;
				},
				target: '#siteNotice',
				where: 'beforeBegin'
			}
		}, {
			name: "wiki[EN]",
			url: /^https?:\/\/en\.wikipedia\.org\/(wiki\/|w\/index\.php\?search=)/,
			engineList: "资料",
			style: '\
			border-top:1px solid #D9E1F7;\
			border-bottom:1px solid #D9E1F7;\
			margin-top:5px;\
			',
			insertIntoDoc: {
				keyword: function() {
					if (document.getElementById('searchText'))
						return document.getElementById('searchText').value;
					else return document.getElementById('firstHeading').childNodes[0].textContent;
				},
				target: '#siteNotice',
				where: 'beforeBegin'
			}
		}, {
			name: "wiki[JP]",
			url: /^https?:\/\/ja\.wikipedia\.org\/(wiki\/|w\/index\.php\?search=)/,
			engineList: "资料",
			style: '\
			border-top:1px solid #D9E1F7;\
			border-bottom:1px solid #D9E1F7;\
			margin-top:5px;\
			',
			insertIntoDoc: {
				keyword: function() {
					if (document.getElementById('searchText'))
						return document.getElementById('searchText').value;
					else return document.getElementById('firstHeading').childNodes[0].textContent;
				},
				target: '#siteNotice',
				where: 'beforeBegin'
			}
		}, {
			name: "百度知道(search)",
			url: /^https?:\/\/zhidao\.baidu\.com\/search/,
			engineList: "资料",
			style: '\
			margin-bottom: 8px;\
			',
			insertIntoDoc: {
				target: '#body',
				where: 'beforeBegin'
			},
		}, {
			name: "百度知道(question)",
			url: /^https?:\/\/zhidao\.baidu\.com\/question/,
			engineList: "资料",
			style: '\
			white-space: nowrap;\
			',
			insertIntoDoc: {
				target: '#body',
				where: 'beforeBegin'
			},
			endFix: function() { //插入搜索条后修正绿色背景错位的问题
				var container = document.getElementById('sej-container');
				if (container && document.body.classList.contains('has-menu')) {
					document.body.style.backgroundPosition = '0px ' + (95 + container.clientHeight) + 'px';
				}
			},
		}, {
			name: "知乎",
			url: /^https?:\/\/www\.zhihu\.com\/search\?/,
			engineList: "资料",
			style: '\
			border-bottom:1px solid #D9E1F7;\
			',
			insertIntoDoc: {
				target: '.zu-top',
				where: 'afterEnd'
			},
		}, {
			name: "百度文库",
			url: /^https?:\/\/wenku\.baidu\.com\/search\?/,
			engineList: "资料",
			style: '\
			border-top:1px solid #D9E1F7;\
			border-bottom:1px solid #D9E1F7;\
			',
			insertIntoDoc: {
				target: '#hd',
				where: 'afterEnd'
			}
		}, {
			name: "豆丁",
			url: /^https?:\/\/www\.docin\.com\/search\.do/,
			engineList: "资料",
			style: '\
			padding-top:65px;\
			border-top:1px solid #00000;\
			border-bottom:1px solid #D9E1F7;\
			',
			insertIntoDoc: {
				target: '.nav',
				where: 'beforeBegin'
			}
		},
		// 地图
		{
			name: "百度地图",
			url: /^https?:\/\/map\.baidu\.com\/\?newmap/,
			engineList: "map",
			style: '\
			margin-left:20px;\
			border-top:1px solid #00000;\
			border-bottom:1px solid #D9E1F7;\
			',
			insertIntoDoc: {
				target: '#searchWrapper',
				where: 'beforeEnd'
			}
		}, {
			name: "google地图",
			url: /^https?:\/\/www\.google\.co.{1,4}\/maps/,
			engineList: "map",
			style: '\
			margin-top: 3px;\
			',
			insertIntoDoc: {
				target: '#omnibox',
				where: 'beforeEnd'
			},
			stylish: '.widget-pane-section-omnibox-spacer{height:90px !important;} .sej-drop-list-trigger{display:none;}',
		}, {
			name: "搜狗地图",
			url: /^https?:\/\/map\.sogou\.com\/#/,
			engineList: "map",
			style: '\
			padding-left:15px;\
			display:block;\
			border-top:1px solid #00000;\
			border-bottom:1px solid #D9E1F7;\
			word-break:keep-all;\
			white-space:nowrap;\
			',
			insertIntoDoc: {
				target: '#search_form',
				where: 'afterEnd'
			},
			stylish: '.sej-drop-list-trigger {display:none;}'
		}, {
			name: "Bing地图",
			url: /^https?:\/\/[^.]*\.bing\.com\/ditu\//,
			engineList: "map",
			style: '\
			display: inline-block;\
			margin-left:15px;\
			border-top:1px solid #00000;\
			border-bottom:1px solid #D9E1F7;\
			word-break:keep-all;\
			white-space:nowrap;\
			',
			insertIntoDoc: {
				target: '#sw_content',
				where: 'beforeBegin'
			}
		},
		// 音乐
		{
			name: "天天动听",
			url: /^https?:\/\/www\.dongting\.com\/#/,
			engineList: "music",
			style: "\
			margin-left:23%;\
			background-color:none;\
			position: fixed;\
			right:0;\
			",
			insertIntoDoc: {
				keyword: '.searchBox',
				target: '.head',
				where: 'beforeEnd'
			}
		}, {
			name: "百度音乐",
			url: /^https?:\/\/music\.baidu\.com\/search/,
			engineList: "music",
			insertIntoDoc: {
				target: '.nav-wrapper',
				where: 'beforeBegin'
			}
		}, {
			name: "qq音乐",
			url: /^https?:\/\/cgi\.music\.soso\.com/,
			engineList: "music",
			insertIntoDoc: {
				target: '#search_result',
				where: 'beforeBegin'
			}
		}, {
			name: "搜狗音乐",
			url: /^https?:\/\/mp3\.sogou\.com\/music\.so/,
			engineList: "music",
			insertIntoDoc: {
				target: '#header_sogou',
				where: 'afterEnd'
			}
		}, {
			name: "音悦台",
			url: /^https?:\/\/so\.yinyuetai\.com\/mv\?/,
			engineList: "music",
			insertIntoDoc: {
				target: '.search_title',
				where: 'beforeBegin'
			},
		}, {
			name: "一听音乐",
			url: /^https?:\/\/so\.1ting\.com\//,
			engineList: "music",
			style: "\
			width: 960px;\
			",
			insertIntoDoc: {
				target: '.nav',
				where: 'beforeBegin'
			}
		}, {
			name: "xiami",
			url: /^https?:\/\/www\.xiami\.com\/search/,
			engineList: "music",
			style: "\
			word-break:keep-all;\
			margin-right: 205px;\
			",
			insertIntoDoc: {
				target: '.more_cols_left_inner',
				where: 'beforeBegin'
			}
		},
		// 图片
		{
			name: "谷歌图片",
			url: /^https?:\/\/\w{2,10}\.google(?:\.\D{1,3}){1,2}\/search\?(.*tbs=sbi)|(.*tbm=isch)/,
			engineList: "image",
			style: '\
			margin-left:0px;\
			',
			insertIntoDoc: {
				target: '#top_nav',
				where: 'beforeBegin'
			}
		}, {
			name: "百度图片",
			url: /^https?:\/\/image\.baidu\.c(om|n)\/search/,
			engineList: "image",
			style: '\
			margin-left:40px;\
			',
			insertIntoDoc: {
				target: '#search',
				where: 'afterEnd'
			}
		}, {
			name: "360图片",
			url: /^https?:\/\/\image\.haosou\.com\/i\?/,
			engineList: "image",
			style: '\
			word-break:keep-all;\
			white-space:nowrap;\
			margin-left: 21px;\
			margin-top: 7px;\
			',
			insertIntoDoc: {
				target: '#searchBox',
				where: 'beforeEnd'
			},
			stylish:'#searchBox{height:75px !important;}.searchwrap{height:60px}'
		}, {
			name: "bing图片",
			url: /^https?:\/\/.*\.bing\.com\/images\/search/,
			engineList: "image",
			style: '\
			top:-5px;\
			margin-left:5px;\
			border-collapse:separate;\
			',
			insertIntoDoc: {
				target: '#rfPane',
				where: 'beforeEnd'
			},
		}, {
			name: "搜狗图片",
			url: /^https?:\/\/pic\.sogou\.com\/pic/,
			engineList: "image",
			style: "\
			margin-top: 10px;\
			margin-left:35px;\
			",
			insertIntoDoc: {
				target: '.fix_area',
				where: 'beforeEnd'
			},
			stylish: '#hdFix{height:130px !important;}',
		}, {
			name: "有道图片",
			url: /^https?:\/\/image\.youdao\.com\/search/,
			engineList: "image",
			style: "\
			",
			insertIntoDoc: {
				target: '#w',
				where: 'beforeBegin'
			}
		}, {
			name: "花瓣",
			url: /^https?:\/\/huaban\.com\/search\/\?/,
			engineList: "image",
			style: "\
			box-shadow:none;\
			",
			insertIntoDoc: {
				target: '#header',
				where: 'beforeEnd'
			},
			stylish: '#page{padding-top: 75px;}#header{height: 80px;}.floating{top: 80px !important;}',
		}, {
			name: "flickr",
			url: /^https?:\/\/www\.flickr\.com\/search/,
			change: 'noExternalRequests',
			engineList: "image",
			style: "\
			position:fixed;\
			top:50px;\
			left: 50%;\
			transform: translate(-50%,0);\
			z-index:1999;\
			",
			insertIntoDoc: {
				keyword: function() {
					var input = document.querySelector("input[type='text'][value]");
					if (input) return input.value;
					else {
						var m = location.search.match(/q=([^&]+)/i);
						if (m) return true;
					}
				},
				target: 'body',
				where: 'beforeBegin'
			}
		}, {
			name: "picsearch",
			url: /^http:\/\/(..|...)\.picsearch\.com\/index\.cgi/,
			engineList: "image",
			style: "\
			margin-bottom:3px;\
			",
			insertIntoDoc: {
				keyword: 'input[name=q]',
				target: '#content',
				where: 'afterBegin'
			}
		}, {
			name: "pixiv",
			url: /^http:\/\/www\.pixiv\.net\/search\.php/,
			engineList: "image",
			style: "\
			box-shadow:none;\
			",
			insertIntoDoc: {
				keyword: 'input[name=word]',
				target: 'body',
				where: 'beforeBegin'
			}
		}, {
			name: "deviantart",
			url: /^https?:\/\/www\.deviantart\.com\/browse\/all\//,
			engineList: "image",
			style: "\
			margin-bottom:10px;\
			",
			insertIntoDoc: {
				target: '.browse-top-bar',
				where: 'afterEnd'
			},
			etc: function() {
				if (window.location.href.indexOf('%26%23') == -1 && /%[A-Fa-f8-9][A-Fa-f0-9]/.test(window.location.href)){
					var url = window.location.href.split('q=');
					window.location.href = url[0]+'q='+toUTF16(decodeURIComponent(url[1]));
				}
			}
		}, {
			name: "jpg4",
			url: /^http:\/\/img\.jpg4\.info\//,
			engineList: "image",
			insertIntoDoc: {
				target: 'form[name="formMAIN"]',
				where: 'beforeEnd'
			}
		},
		// 下载
		{
			name: "cili008",
			url: /^http:\/\/cili008\.com\/\?topic_title/,
			engineList: "下载",
			insertIntoDoc: {
				target: '.header-box',
				where: 'afterEnd',
			},
		}, {
			name: "dmhy",
			url: /^https?:\/\/share\.dmhy\.org\/topics\/list/,
			engineList: "download",
			insertIntoDoc: {
				keyword: function() {
					var key = document.querySelector('#keyword').value;
					if (key) return key;
					else key = document.title.split(/「|」/)[1];
					return key;
				},
				target: '.quick_search',
				where: 'afterEnd'
			}
		}, {
			name: "kickass",
			url: /^https?:\/\/kat\.cr\/usearch\//,
			engineList: "download",
			insertIntoDoc: {
				target: '#menu',
				where: 'afterEnd'
			},
		}, {
			name: "nyaa",
			url: /^https?:\/\/www\.nyaa\.(se|eu)\/\?page=search/,
			engineList: "download",
			style: "\
			top:44px;\
			",
			insertIntoDoc: {
				target: '#topbar',
				where: 'afterEnd'
			},
			stylish: '#main{padding-top:70px;}',
		}, {
			name: "sukebei.nyaa",
			url: /^https?:\/\/sukebei\.nyaa\.(se|eu)\/\?page=search/,
			engineList: "download",
			style: "\
			top:44px;\
			",
			insertIntoDoc: {
				target: '#topbar',
				where: 'afterEnd'
			},
			stylish: '#main{padding-top:70px;}',
		}, {
			name: "xiaohx",
			url: /^https?:\/\/www\.xiaohx\.net\/search\?/,
			engineList: "download",
			insertIntoDoc: {
				target: '.header_box',
				where: 'afterEnd'
			},
		}, {
			name: "ed2000",
			url: /^https?:\/\/www\.ed2000\.com\/FileList\.asp/,
			engineList: "download",
			insertIntoDoc: {
				target: '.topsearch',
				where: 'afterEnd'
			},
			stylish: 'body{width:80%}',
		}, {
			name: "bt2mag",
			url: /^https?:\/\/www\.bt2mag\.com\/search\//,
			engineList: "download",
			style: '\
			word-break:keep-all;\
			white-space:nowrap;\
			margin: 5px 0;\
			',
			insertIntoDoc: {
				target: '.fullsearch-form.search',
				where: 'afterEnd'
			},
			etc: function() {
				if (window.location.href.indexOf('%20') != -1) window.location.href = window.location.href.replace('%20', '+');
			}
		}, {
			name: "torrentkitty",
			url: /^https?:\/\/(www\.)?torrentkitty\.(net|org)\/search\//,
			engineList: "download",
			style: '\
			margin-top:50px;\
			',
			insertIntoDoc: {
				keyword: function() {
					return document.getElementsByTagName("h2")[0].innerHTML.slice(19, -1);
				},
				target: '.wrapper',
				where: 'afterEnd'
			}
		}, {
			name: "BTDigg",
			url: /^https?:\/\/btdigg\.org\/search\?/,
			engineList: "download",
			insertIntoDoc: {
				target: '.pager',
				where: 'beforeBegin'
			}
		},
		//字幕
		{
			name: "subom",
			url: /^https?:\/\/www\.subom\.net\/search/,
			engineList: "download",
			insertIntoDoc: {
				target: '#container',
				where: 'afterBegin'
			}
		}, {
			name: "subhd",
			url: /^https?:\/\/subhd\.com\/search/,
			engineList: "download",
			style: "\
			top: -10px;\
			",
			insertIntoDoc: {
				target: '.container.list',
				where: 'beforeBegin'
			}
		}, {
			name: "射手网(伪)",
			url: /^https?:\/\/sub\.makedie\.me\/sub\/\?s/,
			engineList: "download",
			insertIntoDoc: {
				target: '#site_header',
				where: 'afterEnd'
			}
		},
		// 购物
		{
			name: "一淘",
			url: /^https?:\/\/s8?\.etao\.com\/search/,
			engineList: "shopping",
			insertIntoDoc: {
				target: '#etao-header-bd',
				where: 'beforeBegin'
			}
		}, {
			name: "京东",
			url: /^https?:\/\/search\.jd\.com\/(S|s)earch\?/i,
			engineList: "shopping",
			insertIntoDoc: {
				target: 'div[id*="nav-201"]',
				where: 'beforeBegin'
			}
		}, {
			name: "淘宝搜索",
			url: /^https?:\/\/(s|haosou\.ai)\.taobao\.com\/search/,
			change: 'runAtComplete',
			engineList: "shopping",
			style: "\
			box-shadow: none;\
			",
			insertIntoDoc: {
				target: 'body',
				where: 'beforeBegin',
			},
		}, {
			name: "易迅",
			url: /^https?:\/\/searchex\.yixun\.com\/html\?/,
			engineList: "shopping",
			insertIntoDoc: {
				target: '.ic_header',
				where: 'beforeEnd'
			}
		}, {
			name: "苏宁",
			url: /^https?:\/\/search\.suning\.com\//,
			engineList: "shopping",
			style: "\
			border-bottom:1px solid #E5E5E5;\
			",
			insertIntoDoc: {
				target: '.ng-header',
				where: 'afterEnd'
			}
		}, {
			name: "天猫",
			url: /^https?:\/\/list\.tmall\.com\/\/?search/,
			engineList: "shopping",
			style: "\
			border-top:1px solid #E5E5E5;\
			margin-bottom:3px;\
			",
			insertIntoDoc: {
				target: '#header',
				where: 'afterEnd'
			}
		}, {
			name: "亚马逊",
			url: /^https?:\/\/www\.amazon\.cn\/s\/ref/,
			engineList: "shopping",
			style: "\
			box-shadow:none;\
			",
			insertIntoDoc: {
				target: '#navbar',
				where: 'beforeEnd'
			}
		}, {
			name: "当当",
			url: /^https?:\/\/search\.dangdang\.com\/\?key/,
			engineList: "shopping",
			insertIntoDoc: {
				target: '#bd',
				where: 'beforeBegin'
			}
		}, {
			name: "拍拍",
			url: /^https?:\/\/(www|duobao)\.paipai\.com\/(list)?\?/,
			engineList: "shopping",
			insertIntoDoc: {
				keyword: 'input[type="text"]',
				target: '#toTop',
				where: 'afterEnd'
			}
		},
		// 词典
		{
			name: "汉典",
			url: /^https?:\/\/www\.zdic\.net\/sousuo/,
			engineList: "etc",
			insertIntoDoc: {
				target: '.secpan',
				where: 'afterEnd'
			}
		},
	];

	if (typeof exports !== 'undefined') {
		exports.rules = rules;
	}

	reloadDebug();
	// --------------------可设置项结束------------------------
	var debug;

	function reloadDebug() {
		debug = prefs.debug ? console.debug.bind(console) : function() {};
	}

	if (typeof String.prototype.startsWith != 'function') {
		String.prototype.startsWith = function(str) {
			return this.slice(0, str.length) == str;
		};
	}

	function getPostFormHTML(url, args, newTab) { //获取 method 为 POST 的表单的 HTML
		var form = '<form method="post"' +
			' action="' + url + '"' +
			(newTab ? ' target="_blank"' : '') +
			'>';
		for (var arg in args) {
			var input = '<input type="hidden"' +
				' name="' + arg + '"' +
				' value="' + args[arg] + '"' +
				' />';
			form += input;
		}
		form += '</form>';
		return form;
	}

	function wrapToHide(html) { //包装 HTML 元素代码以隐藏该元素
		return '<span style="display:none;">' + html + '</span>';
	}

	function toRE(obj) {
		if (obj instanceof RegExp) {
			return obj;
		} else if (obj instanceof Array) {
			return new RegExp(obj[0], obj[1]);
		} else {
			return new RegExp(obj);
		}
	}

	function getMStr(func) {
		var lines = func.toString();
		lines = lines.substring(lines.indexOf("/*") + 3, lines.lastIndexOf("*/"));
		return lines;
	}

	// 事件支持检测.
	// 比如 eventSupported('fullscreenchange', document);
	function eventSupported(eventName, elem) {
		elem = elem || document.createElement('div');
		var prefix = ['o', 'ms', 'moz', 'webkit', ''];

		var l = prefix.length;
		var pEventName;
		var isFunction;
		var setAttr;

		while (l--) {
			pEventName = 'on' + prefix[l] + eventName;

			if (pEventName in elem) return pEventName.slice(2);
			else if (typeof elem.setAttribute == 'function') { //setAttribute 是元素节点的方法
				setAttr = false;
				if (!elem.hasAttribute(pEventName)) {
					setAttr = true;
					elem.setAttribute(pEventName, 'return;');
				};

				isFunction = typeof elem[pEventName] == 'function';

				if (setAttr) elem.removeAttribute(pEventName);

				if (isFunction) {
					return pEventName.slice(2);
				};
			};
		};

		return false;
	};

	var data = (function() { //保存指定对象相关数据
		'use strict';

		var cache = {
			objs: [],
			data: {},
		};


		function data(obj, key, value) {
			var id = cache.objs.indexOf(obj);
			if (id == -1) {
				id = cache.objs.push(obj) - 1;
			};
			if (!cache.data[id]) cache.data[id] = {}; //初始化
			if (typeof value == 'undefined') { //取值
				return typeof key == 'undefined' ? cache.data[id] : cache.data[id][key];
			} else {
				return cache.data[id][key] = value;
			};
		};

		return data;
	})();

	function getScrolled(container) { //获取已滚动的距离
		if (container) {
			return {
				x: container.scrollLeft,
				y: container.scrollTop,
			};
		};
		return {
			x: 'scrollX' in window ? window.scrollX : ('pageXOffset' in window ? window.pageXOffset : document.documentElement.scrollLeft || document.body.scrollLeft),
			y: 'scrollY' in window ? window.scrollY : ('pageYOffset' in window ? window.pageYOffset : document.documentElement.scrollTop || document.body.scrollTop),
		};
	};

	function getElement(selector) {
		return document.querySelector(selector);
	};

	function toUTF16(str) { //说是UTF16,但其实是dA专用的,是对转义字符进行编码
		var length = str.length;
		var ret = [];
		var character;
		var charCode;
		var gCode;
		var neReg = /[\dA-z]/;
		for (var i = 0; i < length; i++) {
			charCode = str.charCodeAt(i);
			if (charCode <= 128) {
				character = str.charAt(i);
				if (neReg.test(character)) { /*ascii的数字字母不编码*/
					ret.push(character);
				} else {
					ret.push('%' + charCode.toString(16));
				};
			} else {
				gCode = charCode.toString();
				if (gCode) {
					while (gCode.length < 4) {
						gCode = '0' + gCode;
					};
					ret.push('%26%23' + gCode + '%3B');
				} else {
					/*字库里面没有.*/
				};
			};
		};
		return ret.join('');
	};

	function getFaviconUrl(url, type) {
		var uri = parseUri(url);
		switch (type) {
			case 0:
				return 'https://www.google.com/s2/favicons?domain=' + uri.host;
			default:
				return uri.protocol + '://' + uri.host + '/favicon.ico';
		}
	}

	// parseUri 1.2.2
	// (c) Steven Levithan <stevenlevithan.com>
	// MIT License
	var parseUri = function(str) {
		var o = parseUri.options,
			m = o.parser[o.strictMode ? "strict" : "loose"].exec(str),
			uri = {},
			i = 14;

		while (i--) uri[o.key[i]] = m[i] || "";

		uri[o.ds.name] = {};
		uri[o.ds.name][0] = {};
		uri[o.ds.name][0]['key'] = (uri.protocol ? uri.protocol : 'http') + '://' + uri.host + (uri.port ? ':' + uri.port : '') + '/';
		uri[o.ds.name][0]['val'] = '/';
		var i = 0,
			tempsub = '/',
			subs = uri[o.key[10]].substr(1).split('/');
		for (var j = 1; j < (subs.length + 1); j++, i++) {
			tempsub += tempsub === '/' ? subs[i] : '/' + subs[i];
			if (subs[i]) {
				uri[o.ds.name][j] = {};
				uri[o.ds.name][j]['key'] = subs[i];
				uri[o.ds.name][j]['val'] = tempsub;
			}
		}

		uri[o.q.name] = {};
		uri[o.key[12]].replace(o.q.parser, function($0, $1, $2) {
			if ($1) uri[o.q.name][$1] = $2;
		});
		uri[o.aq.name] = {};
		uri[o.key[13]].replace(o.aq.parser, function($0, $1, $2) {
			if ($1) uri[o.aq.name][$1] = $2;
		});

		return uri;
	};
	parseUri.options = {
		strictMode: false,
		key: ["source", "protocol", "authority", "userInfo", "user", "password", "host", "port", "relative", "path", "directory", "file", "query", "anchor"],
		q: {
			name: "queryKey",
			parser: /(?:^|&)([^&=]*)=?([^&]*)/g
		},
		aq: {
			name: "anchorqueryKey",
			parser: /(?:^|&)([^&=]*)=?([^&]*)/g
		},
		ds: {
			name: "directorySub"
		},
		parser: {
			strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
			loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
		}
	};

	if (typeof exports !== 'undefined') {
		exports.parseUri = parseUri;
	}

	function addGlobalStyle() {
		// 添加全局样式和自定义样式
		var style = document.getElementById('sej-style');
		if (!style) {
			style = document.createElement('style');
			style.id = 'sej-style';
			style.type = 'text/css';
			style.textContent = MAIN_CSS + '\n' + (matchedRule.stylish || '');
			document.head.appendChild(style);
		}
		if(!(matchedRule.change&&matchedRule.change == 'noExternalRequests')){
			var style = document.getElementById('sej-fontawesome');
			if (!style) {
				style = document.createElement('style');
				style.id = 'sej-fontawesome';
				style.type = 'text/css';
				style.textContent = fontawesome;
				document.head.appendChild(style);
			}
		}
	}

	function addContainer(iTarget, iInput) {
		function parseDataStr(str) { //转换文本数据

			var List = str.split(/\n(?=[^\s])/);
			List.forEach(function(eachList) {
				var line = eachList.split(/[\n\r]+/);
				var category = line[0];
				var category = category.split('--');
				if (isTheSameCategory(category[0], matchedRule.engineList)) {
					container.innerHTML += '<sejli><i class="fa fa-'+category[1]+'"></i><sejspan id="sej-expanded-category">' + category[0] + '</sejspan></sejli>'
					parseLine(container, line, true);
				} else {
					var contSejli = document.createElement('sejli');
					contSejli.innerHTML = '<sejspan class="sej-engine sej-drop-list-trigger"><i class="fa fa-'+category[1]+'"></i>' + category[0] + '</sejspan>'
					var sejul = document.createElement('sejul');
					sejul.className = "sej-drop-list";
					parseLine(sejul, line, false);
					contSejli.appendChild(sejul);
					container.appendChild(contSejli);
				}
			})


			str = str.replace(/[\n\r]+[\s\/]*-\s*(\S+):/g, '_POST_ $1:'); //提前处理下特殊的 post 方式

			var parseArgs = function(str) {
				var arr = str.replace(/,/g, ', ').split(/\s*, \s*/);
				var args = {};
				arr.forEach(function(s) {
					var argArr = s.split(/\s*: \s*/);
					args[argArr[0]] = argArr[1];
				});
				return args;
			};

			function parseLine(container, line, isCurrent) {
				line.splice(0, 1);
				var sejul, defaultEngine, contSejli;
				var flag, flag2;
				for (var i = 0; i < line.length; i++) {
					if (!line[i]) continue;

					if (line[i].indexOf('//') == 0) {
						continue;
					}
					var arr = line[i].replace(/,/g, ', ').split(/,\s/);
					if (isCurrent && matchedRule.engineList && toRE(matchedRule.url).test(arr[1])) { //去掉跳转到当前引擎
						if(flag==i-1)flag++;
						if(flag2==i-1){
							if (i == line.length - 1) {
								contSejli.appendChild(sejul);
								container.appendChild(contSejli);
							}
							flag2++
						}
						continue;
					}
					var engine = {};
					if (line[i].indexOf('_POST_') != -1) {
						engine.method = 'POST';
						var two = line.split(/\s*_POST_\s*/);
						line[i] = two[0];
						engine.args = parseArgs(two[1]);
					}
					if (arr.length === 1) { //分类
						flag = i;
						if (flag2 == i - 1 && sejul != "") {
							contSejli.appendChild(sejul);
							container.appendChild(contSejli);
						}
						defaultEngine = arr[0].trim();
						sejul = document.createElement('sejul');
						sejul.className = "sej-drop-list";
						continue;
					}
					if (/\s\s/.test(arr[0])) {//引擎分类只支持2级,所以两个tab就是二级分类的引擎
						var url = arr[1];
						var sejli = document.createElement('sejli');
						sejli.innerHTML = getaPattern(arr);
						sejul.appendChild(sejli);
						if (i == flag + 1) { //由于二级分类大多是引擎细分,所以引擎名字上也需要能点击才行
							arr[0] = defaultEngine;
							contSejli = document.createElement('sejli');
							contSejli.innerHTML = getaPattern(arr).replace("sej-engine", "sej-engine sej-drop-list-trigger");
						}
						flag2 = i;//flag2代表二级分类的引擎标记,结束后需要写入列表
						if (i == line.length - 1) {//如果已二级分类的引擎结尾,写入列表
							contSejli.appendChild(sejul);
							container.appendChild(contSejli);
						}
						continue;
					}
					if (/\s[^\s]/.test(arr[0])) {
						if (flag2 == i - 1 && sejul != "") {//看是否二级分类引擎结束
							contSejli.appendChild(sejul);
							container.appendChild(contSejli);
						}
						sejul = "";
						var sejli = document.createElement('sejli');
						sejli.innerHTML = getaPattern(arr);
						container.appendChild(sejli);
					}
				}
			};

		}

		function getaPattern(arr) {
				if (arr[1].indexOf('_POST_') != -1) {
					engine.method = 'POST';
					var two = line.split(/\s*_POST_\s*/);
					line = two[0];
					engine.args = parseArgs(two[1]);
				}

				var engine = {};
				engine.name = arr[0].trim();
				engine.url = arr[1];
				engine.host = parseUri(engine.url).host;
				if (arr[2]) engine.favicon = arr[2];
				if (!engine.favicon) {
					engine.favicon = getFaviconUrl(engine.url);
				}
				var a = aPattern.replace('$url$', engine.url)
					.replace('$name$', engine.name)
					.replace('$title$', engine.name);
				if(matchedRule.change == 'noExternalRequests')a = a.replace('<img src="$favicon$" class="sej-engine-icon" />','')
				else if (engine.favicon) {
					if(/^fa/.test(engine.favicon))a = a.replace('<img src="$favicon$" class="sej-engine-icon" />', '<i class="fa '+engine.favicon+'"></i>');
					a = a.replace('$favicon$', engine.favicon);
				} else {
					a = a.replace('src="$favicon$"', '');
				}

				if (engine.method && engine.method.toUpperCase() == 'POST') {
					var f = wrapToHide(getPostFormHTML(engine.url, engine.args, prefs.openInNewTab));
					a = a.replace('$form$', f);
					a = a.replace('$onclick$', "this.getElementsByTagName('form')[0].submit();return false;");
				} else {
					a = a.replace('$form$', '');
					a = a.replace('onclick="$onclick$"', '');
				}
				return a;
			}
			// 创建dom
		var aPattern = '<a href="" class="sej-engine"' + (prefs.openInNewTab ? ' target="_blank" ' : ' ') +
			'url="$url$" onclick="$onclick$" _title="$title$">' +
			'<img src="$favicon$" class="sej-engine-icon" />$form$<span>$name$</span></a>';

		var container = document.createElement('sejul');
		container.id = 'sej-container';

		container.addEventListener('mousedown', mousedownhandler, true);
		if (matchedRule.style) {
			container.style.cssText = matchedRule.style;
		}
		// 根据搜索列表的类型得到数据
		var engineListDataStr = engineListData[prefs.engineListDataType] || engineListData.normal;
		parseDataStr(engineListDataStr);
		var isMatched = false; //当前搜索只匹配一次
		var insertWhere = matchedRule.insertIntoDoc.where; //设置插入的位置

		switch (insertWhere.toLowerCase()) { //插入到文档中
			case 'beforebegin':
				iTarget.parentNode.insertBefore(container, iTarget);
				break;
			case 'afterbegin':
				if (iTarget.firstChild) {
					iTarget.insertBefore(container, iTarget.firstChild);
				} else {
					iTarget.appendChild(container);
				}
				break;
			case 'beforeend':
				iTarget.appendChild(container);
				break;
			case 'afterend':
				if (iTarget.nextSibling) {
					iTarget.parentNode.insertBefore(container, iTarget.nextSibling);
				} else {
					iTarget.parentNode.appendChild(container);
				}
				break;

		};

		var isTwoLine = container.clientHeight / container.children[1].clientHeight > 2;

		// 插入后调整下,如果变成两行,隐藏文字
		if (prefs.hideEnglineLabel == 2 || (prefs.hideEnglineLabel == 1 && isTwoLine)) {
			[].forEach.call(document.querySelectorAll('#sej-container > a[class="sej-engine"] > span'), function(span) {
				var link = span.parentNode;
				link.classList.add('only-icon');
				link.setAttribute('title', span.textContent);
			});
		}

		if (typeof matchedRule.endFix == 'function') {
			try {
				matchedRule.endFix();
			} catch (ex) {
				console.error('endFix 错误', ex);
			}
		}

		function mousedownhandler(e) {
			var target = e.target;
			if (!target.href) target = target.parentNode;

			if (!target || target.className.indexOf('sej-engine') == -1) return;
			if (!target || !this.contains(target)) return;

			var value;
			if (typeof iInput == 'function') value = iInput();
			else {
				if (iInput.nodeName == 'INPUT' || iInput.localName == 'textarea') value = iInput.value;
				else value = iInput.textContent;
			}

			// 根据后代元素中是否存在 form 元素,判断提交方式并进行处理
			// 如果没有 form 元素,将会使用 GET 方法提交;如果有,将会使用 POST 方法提交
			var forms = target.getElementsByTagName('form');
			if (forms.length == 0) { //提交方式为 GET
				target.href = target.getAttribute('url').replace(/%s/g, value); //替换“全部”关键词
			} else { //提交方式为 POST
				var inputs = target.getElementsByTagName('input');
				for (var i = 0; i < inputs.length; i++) inputs[i].value = inputs[i].value.replace(/%s/g, value); //// 替换“全部”关键词
			}
		}
	}

	function run() {
		// 百度搜索插入到顶部搜索条下面就会造成页面部分元素的消失,所以需要每个部分都判断下是否存在
		// 判断插入位置和输入框是否存在
		var iTarget = getElement(matchedRule.insertIntoDoc.target);
		var iInput;
		if (matchedRule.insertIntoDoc.keyword) {
			if (typeof matchedRule.insertIntoDoc.keyword == 'function') {
				iInput = matchedRule.insertIntoDoc.keyword;
				if (!iInput()) {
					return;
				}
			} else {
				iInput = getElement(matchedRule.insertIntoDoc.keyword);
			}
		} else {
			iInput = document.querySelector('input[type="search"],input[name][value]:not([type]),input[type="text"][value][name]');
			if (!iInput) {
				iInput = document.querySelector('input[autocomplete="off"]:not([type]),input[type="text"]');
			}
		}
		debug('插入的位置为 %o', iTarget);
		debug('匹配的输入框为 %o', iInput);

		if (!iTarget || !iInput) {
			debug('不存在插入的位置或匹配的输入框', iTarget, iInput);
			return;
		}

		addGlobalStyle();

		// 判断是否存在
		var container = document.getElementById('sej-container');

		if (!container) {
			if (container) {
				container.parentNode.removeChild(container);
			}
			addContainer(iTarget, iInput);
		}
	}

	function remove() {
		var elems = document.querySelectorAll('#sej-container');
		if (!elems) return;

		[].forEach.call(elems, function(elem) {
			elem.parentNode.removeChild(elem);
		});
	}

	// iframe 禁止加载
	if (window.self != window.top) return;

	var matchedRule;

	rules.some(function(rule) {
		if (toRE(rule.url).test(location.href)) {
			matchedRule = rule;
			if (typeof rule.etc == 'function') {
				try {
					rule.etc();
				} catch (ex) {
					console.error('执行 etc 错误', ex);
				}
			}
			return true;
		};
	});


	debug('匹配的规则为', matchedRule);

	if (!matchedRule) return;

	if (matchedRule.change) {
		if (matchedRule.change == "mutationTitle") {
			run();
			debug('添加标题节点监视器: title');

			var watch = document.querySelector('title');
			var observer = new MutationObserver(function(mutations) {
				debug('标题发生了变化', document.title);
				run();
			});
			observer.observe(watch, {
				childList: true,
				subtree: true,
				characterData: true
			});
		}
		else if (matchedRule.change == "runAtComplete") {
			document.onreadystatechange = function() {
				debug('onreadystatechange');
				if (document.readyState == "complete") {
					run();
				}
			}
		}
		else run();
	} else run();
})()