// ==UserScript==
// @name searchEngineJump-NextStage
// @author ted423
// @contributor NLF && ywzhaiqi
// @description 方便的在各个引擎之间跳转。可自定义搜索列表的 NLF 修改版。
// @version 8.1601.20.0
// @exclude *.mediatek.inc/*
// @exclude http://tieba.baidu.com/*
// @namespace https://greasyfork.org/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.nyaa.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.nyaa.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 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-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-inverse{color:#fff}.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-arrow-circle-o-right:before{content:"\\f18e"}.fa-arrow-circle-o-left:before{content:"\\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\\f191"}.fa-dot-circle-o:before{content:"\\f192"}.fa-wheelchair:before{content:"\\f193"}.fa-vimeo-square:before{content:"\\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\\f195"}.fa-plus-square-o:before{content:"\\f196"}.fa-space-shuttle:before{content:"\\f197"}.fa-slack:before{content:"\\f198"}.fa-envelope-square:before{content:"\\f199"}.fa-wordpress:before{content:"\\f19a"}.fa-openid:before{content:"\\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\\f19d"}.fa-yahoo:before{content:"\\f19e"}.fa-google:before{content:"\\f1a0"}.fa-reddit:before{content:"\\f1a1"}.fa-reddit-square:before{content:"\\f1a2"}.fa-stumbleupon-circle:before{content:"\\f1a3"}.fa-stumbleupon:before{content:"\\f1a4"}.fa-delicious:before{content:"\\f1a5"}.fa-digg:before{content:"\\f1a6"}.fa-pied-piper:before{content:"\\f1a7"}.fa-pied-piper-alt:before{content:"\\f1a8"}.fa-drupal:before{content:"\\f1a9"}.fa-joomla:before{content:"\\f1aa"}.fa-language:before{content:"\\f1ab"}.fa-fax:before{content:"\\f1ac"}.fa-building:before{content:"\\f1ad"}.fa-child:before{content:"\\f1ae"}.fa-paw:before{content:"\\f1b0";border: solid 1px;padding: 1px 1px 0 1px;}.fa-spoon:before{content:"\\f1b1"}.fa-cube:before{content:"\\f1b2"}.fa-cubes:before{content:"\\f1b3"}.fa-behance:before{content:"\\f1b4"}.fa-behance-square:before{content:"\\f1b5"}.fa-steam:before{content:"\\f1b6"}.fa-steam-square:before{content:"\\f1b7"}.fa-recycle:before{content:"\\f1b8"}.fa-automobile:before,.fa-car:before{content:"\\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\\f1ba"}.fa-tree:before{content:"\\f1bb"}.fa-spotify:before{content:"\\f1bc"}.fa-deviantart:before{content:"\\f1bd"}.fa-soundcloud:before{content:"\\f1be"}.fa-database:before{content:"\\f1c0"}.fa-file-pdf-o:before{content:"\\f1c1"}.fa-file-word-o:before{content:"\\f1c2"}.fa-file-excel-o:before{content:"\\f1c3"}.fa-file-powerpoint-o:before{content:"\\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\\f1c8"}.fa-file-code-o:before{content:"\\f1c9"}.fa-vine:before{content:"\\f1ca"}.fa-codepen:before{content:"\\f1cb"}.fa-jsfiddle:before{content:"\\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\\f1cd"}.fa-circle-o-notch:before{content:"\\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\\f1d0"}.fa-ge:before,.fa-empire:before{content:"\\f1d1"}.fa-git-square:before{content:"\\f1d2"}.fa-git:before{content:"\\f1d3"}.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-wechat:before,.fa-weixin:before{content:"\\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\\f1d9"}.fa-history:before{content:"\\f1da"}.fa-circle-thin:before{content:"\\f1db"}.fa-header:before{content:"\\f1dc"}.fa-paragraph:before{content:"\\f1dd"}.fa-sliders:before{content:"\\f1de"}.fa-share-alt:before{content:"\\f1e0"}.fa-share-alt-square:before{content:"\\f1e1"}.fa-bomb:before{content:"\\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\\f1e3"}.fa-tty:before{content:"\\f1e4"}.fa-binoculars:before{content:"\\f1e5"}.fa-plug:before{content:"\\f1e6"}.fa-slideshare:before{content:"\\f1e7"}.fa-twitch:before{content:"\\f1e8"}.fa-yelp:before{content:"\\f1e9"}.fa-newspaper-o:before{content:"\\f1ea"}.fa-wifi:before{content:"\\f1eb"}.fa-calculator:before{content:"\\f1ec"}.fa-paypal:before{content:"\\f1ed"}.fa-google-wallet:before{content:"\\f1ee"}.fa-cc-visa:before{content:"\\f1f0"}.fa-cc-mastercard:before{content:"\\f1f1"}.fa-cc-discover:before{content:"\\f1f2"}.fa-cc-amex:before{content:"\\f1f3"}.fa-cc-paypal:before{content:"\\f1f4"}.fa-cc-stripe:before{content:"\\f1f5"}.fa-bell-slash:before{content:"\\f1f6"}.fa-bell-slash-o:before{content:"\\f1f7"}.fa-trash:before{content:"\\f1f8"}.fa-copyright:before{content:"\\f1f9"}.fa-at:before{content:"\\f1fa"}.fa-eyedropper:before{content:"\\f1fb"}.fa-paint-brush:before{content:"\\f1fc"}.fa-birthday-cake:before{content:"\\f1fd"}.fa-area-chart:before{content:"\\f1fe"}.fa-pie-chart:before{content:"\\f200"}.fa-line-chart:before{content:"\\f201"}.fa-lastfm:before{content:"\\f202"}.fa-lastfm-square:before{content:"\\f203"}.fa-toggle-off:before{content:"\\f204"}.fa-toggle-on:before{content:"\\f205"}.fa-bicycle:before{content:"\\f206"}.fa-bus:before{content:"\\f207"}.fa-ioxhost:before{content:"\\f208"}.fa-angellist:before{content:"\\f209"}.fa-cc:before{content:"\\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\\f20b"}.fa-meanpath:before{content:"\\f20c"}.fa-buysellads:before{content:"\\f20d"}.fa-connectdevelop:before{content:"\\f20e"}.fa-dashcube:before{content:"\\f210"}.fa-forumbee:before{content:"\\f211"}.fa-leanpub:before{content:"\\f212"}.fa-sellsy:before{content:"\\f213"}.fa-shirtsinbulk:before{content:"\\f214"}.fa-simplybuilt:before{content:"\\f215"}.fa-skyatlas:before{content:"\\f216"}.fa-cart-plus:before{content:"\\f217"}.fa-cart-arrow-down:before{content:"\\f218"}.fa-diamond:before{content:"\\f219"}.fa-ship:before{content:"\\f21a"}.fa-user-secret:before{content:"\\f21b"}.fa-motorcycle:before{content:"\\f21c"}.fa-street-view:before{content:"\\f21d"}.fa-heartbeat:before{content:"\\f21e"}.fa-venus:before{content:"\\f221"}.fa-mars:before{content:"\\f222"}.fa-mercury:before{content:"\\f223"}.fa-intersex:before,.fa-transgender:before{content:"\\f224"}.fa-transgender-alt:before{content:"\\f225"}.fa-venus-double:before{content:"\\f226"}.fa-mars-double:before{content:"\\f227"}.fa-venus-mars:before{content:"\\f228"}.fa-mars-stroke:before{content:"\\f229"}.fa-mars-stroke-v:before{content:"\\f22a"}.fa-mars-stroke-h:before{content:"\\f22b"}.fa-neuter:before{content:"\\f22c"}.fa-genderless:before{content:"\\f22d"}.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:#E2E2E2;\
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: "songtaste",
url: /^https?:\/\/www\.songtaste\.com\/search/,
engineList: "music",
style: "\
word-break:keep-all;\
white-space:nowrap;\
background-color:#E6E6E6;\
",
insertIntoDoc: {
target: 'head',
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;\
background-color:#FFFFFF;\
",
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: '\
background-color:#FFFFFF;\
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",
style: "\
background-color:#FFFFFF;\
",
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();
})()