|
4 | 4 | // @name:zh-TW 搜索醬 |
5 | 5 | // @name:ja 検索ちゃん |
6 | 6 | // @namespace hoothin |
7 | | -// @version 1.6.5.6.5 |
| 7 | +// @version 1.6.5.6.6 |
8 | 8 | // @description Jump to any search engine quickly and easily, the most powerful, most complete search enhancement script! |
9 | 9 | // @description:zh-CN 又一个多搜索引擎切换脚本,在搜索时一键跳转各大搜索引擎,支持任意页面右键划词搜索与全面自定义 |
10 | 10 | // @description:zh-TW 又一個多搜尋引擎切換脚本,在搜索時一鍵跳轉各大搜尋引擎,支持任意頁面右鍵劃詞搜索與全面自定義 |
|
556 | 556 | showSiteLists: true, |
557 | 557 | cacheSwitch: false, |
558 | 558 | noAni: false, |
559 | | - quickAddRule: true |
| 559 | + quickAddRule: true, |
| 560 | + multiline: 2,//0 关闭 1 开启 2 询问 |
| 561 | + multilineGap: 1000 |
560 | 562 | }; |
561 | 563 | function run() { |
562 | 564 | const lang = navigator.appName == "Netscape" ? navigator.language : navigator.userLanguage; |
|
582 | 584 | siteAdd: '添加', |
583 | 585 | siteType: '分类', |
584 | 586 | siteExist: '已存在相同规则,终止添加', |
585 | | - siteAddOver: '站点添加成功' |
| 587 | + siteAddOver: '站点添加成功', |
| 588 | + multiline: '是否以换行符分隔多行搜索?', |
| 589 | + multilineTooMuch: '行数超过10行,是否继续搜索?' |
586 | 590 | }; |
587 | 591 | break; |
588 | 592 | case "zh-TW": |
|
605 | 609 | siteAdd: '添加', |
606 | 610 | siteType: '分類', |
607 | 611 | siteExist: '已存在相同規則,終止添加', |
608 | | - siteAddOver: '站點添加成功' |
| 612 | + siteAddOver: '站點添加成功', |
| 613 | + multiline: '是否以換行符分隔多行搜索?', |
| 614 | + multilineTooMuch: '行數超過10行,是否繼續搜索?' |
609 | 615 | }; |
610 | 616 | break; |
611 | 617 | default: |
|
627 | 633 | siteAdd: 'Add', |
628 | 634 | siteType: 'Category', |
629 | 635 | siteExist: 'Abort as the site is already exist', |
630 | | - siteAddOver: 'Site added successfully' |
| 636 | + siteAddOver: 'Site added successfully', |
| 637 | + multiline: 'Search as multilines?', |
| 638 | + multilineTooMuch: 'The number of lines exceeds 10, do you want to continue searching?' |
631 | 639 | }; |
632 | 640 | break; |
633 | 641 | } |
|
1614 | 1622 | self.batchOpening = true; |
1615 | 1623 | siteEles.forEach(siteEle => { |
1616 | 1624 | if (siteEle.dataset.nobatch || siteEle.dataset.current) return; |
1617 | | - let isJs = /^javascript:/.test(siteEle.href); |
1618 | | - if (!isJs) { |
| 1625 | + let isPage = /^(https?|ftp):/.test(siteEle.href); |
| 1626 | + if (isPage) { |
1619 | 1627 | siteEle.setAttribute("target", "_blank"); |
1620 | 1628 | } |
1621 | 1629 | let mouseDownEvent = new PointerEvent("mousedown"); |
1622 | 1630 | siteEle.dispatchEvent(mouseDownEvent); |
1623 | | - if (siteEle.onclick || isJs) { |
| 1631 | + if (siteEle.onclick || !isPage) { |
1624 | 1632 | siteEle.click(); |
1625 | 1633 | } else { |
1626 | 1634 | _GM_openInTab(siteEle.href); |
|
1830 | 1838 | self.bar.insertBefore(ele, self.bar.children[self.bar.children.length - 1]); |
1831 | 1839 | ele.dataset.width = ele.scrollWidth + "px"; |
1832 | 1840 | } |
| 1841 | + ele.style.width = ele.scrollHeight + "px"; |
| 1842 | + ele.style.height = ele.scrollHeight + "px"; |
1833 | 1843 | if (inPage && selectImg && selectAudio && selectVideo && selectLink && selectPage) { |
1834 | 1844 | ele.classList.add("search-jumper-targetAll"); |
1835 | 1845 | } else { |
|
1858 | 1868 |
|
1859 | 1869 | createSiteBtn(name, icon, data, openInNewTab) { |
1860 | 1870 | let self = this; |
1861 | | - let isBookmarklet = /^javascript:/.test(data.url); |
| 1871 | + let isPage = /^(https?|ftp):/.test(data.url); |
1862 | 1872 | let ele = document.createElement("a"); |
1863 | 1873 | ele.className = "search-jumper-btn"; |
1864 | 1874 | if (typeof data.description !== 'undefined') ele.title = data.description; |
|
2007 | 2017 | ele.style.display = 'none'; |
2008 | 2018 | } |
2009 | 2019 | } |
2010 | | - if (!isBookmarklet && (openInNewTab || searchData.prefConfig.openInNewTab)) { |
| 2020 | + if (isPage && (openInNewTab || searchData.prefConfig.openInNewTab)) { |
2011 | 2021 | ele.setAttribute("target", "_blank"); |
2012 | 2022 | ele.dataset.target = 1; |
2013 | 2023 | } |
|
2244 | 2254 | //disable click |
2245 | 2255 | ele.onclick = e => { |
2246 | 2256 | ele.onclick = null; |
| 2257 | + e.preventDefault(); |
| 2258 | + e.stopPropagation(); |
2247 | 2259 | return false; |
2248 | 2260 | }; |
2249 | 2261 | } else ele.href = url; |
2250 | | - let isJs = /^javascript:/.test(url); |
| 2262 | + let isPage = /^(https?|ftp):/.test(url); |
2251 | 2263 | let checkAlt = () => { |
2252 | | - if (alt && !isJs) { |
| 2264 | + if (alt && isPage) { |
2253 | 2265 | ele.onclick = e => { |
2254 | 2266 | ele.onclick = null; |
2255 | 2267 | _unsafeWindow.open(url, "_blank", "width=800, height=1000, location=0, resizable=1, menubar=0, scrollbars=0"); |
|
2262 | 2274 | if (customInput) { |
2263 | 2275 | if (self.batchOpening !== true) { |
2264 | 2276 | //lose click, click one more time |
2265 | | - if (checkAlt() || isJs) { |
| 2277 | + if (checkAlt() || !isPage) { |
2266 | 2278 | ele.click(); |
2267 | 2279 | } else { |
2268 | 2280 | _GM_openInTab(url, {active: true}); |
2269 | 2281 | } |
2270 | 2282 | } |
2271 | 2283 | } else { |
2272 | 2284 | if (!checkAlt()) { |
| 2285 | + if (searchData.prefConfig.multiline == 1 || searchData.prefConfig.multiline == 2) { |
| 2286 | + let selStr = getSelectStr(); |
| 2287 | + if (selStr && |
| 2288 | + /%s\b/.test(ele.dataset.url) && |
| 2289 | + selStr.indexOf("\n") !== -1) { |
| 2290 | + if (searchData.prefConfig.multiline == 1 || |
| 2291 | + confirm(i18n("multiline"))) { |
| 2292 | + let selStrArr = selStr.split("\n"); |
| 2293 | + if (selStrArr.length > 10 && !confirm(i18n("multilineTooMuch"))) return; |
| 2294 | + let encodeSelStr = encodeURIComponent(selStr); |
| 2295 | + let searchIndex = 0; |
| 2296 | + let searchByLine = () => { |
| 2297 | + _GM_openInTab(url.replace(encodeSelStr, encodeURIComponent(selStrArr[searchIndex++]))); |
| 2298 | + if (searchIndex < selStrArr.length) { |
| 2299 | + setTimeout(() => { |
| 2300 | + searchByLine(); |
| 2301 | + }, searchData.prefConfig.multilineGap || 1000); |
| 2302 | + } |
| 2303 | + }; |
| 2304 | + searchByLine(); |
| 2305 | + if (searchData.prefConfig.multiline == 1) { |
| 2306 | + ele.onclick = e => { |
| 2307 | + ele.onclick = null; |
| 2308 | + e.preventDefault(); |
| 2309 | + e.stopPropagation(); |
| 2310 | + return false; |
| 2311 | + }; |
| 2312 | + } |
| 2313 | + } else { |
| 2314 | + ele.click(); |
| 2315 | + } |
| 2316 | + return false; |
| 2317 | + } |
| 2318 | + } |
2273 | 2319 | ele.onclick = null; |
2274 | 2320 | } |
2275 | 2321 | } |
|
3540 | 3586 | if (typeof searchData.prefConfig.quickAddRule === "undefined") { |
3541 | 3587 | searchData.prefConfig.quickAddRule = true; |
3542 | 3588 | } |
| 3589 | + if (typeof searchData.prefConfig.multiline === "undefined") { |
| 3590 | + searchData.prefConfig.multiline = 2; |
| 3591 | + } |
| 3592 | + if (typeof searchData.prefConfig.multilineGap === "undefined") { |
| 3593 | + searchData.prefConfig.multilineGap = 1000; |
| 3594 | + } |
3543 | 3595 | } |
3544 | 3596 |
|
3545 | 3597 | async function init() { |
|
0 commit comments