您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
搜索框增强 + 结果列表上下键选择 + 回车跳转 + ESC回搜索框(清空) + 左右键翻页 + 匹配站点全站解除禁止复制 + 403自动跳转
// ==UserScript== // @name E书刊 & 万维学术 搜索增强套件 // @namespace http://tampermonkey.net/ // @version 1.4 // @description 搜索框增强 + 结果列表上下键选择 + 回车跳转 + ESC回搜索框(清空) + 左右键翻页 + 匹配站点全站解除禁止复制 + 403自动跳转 // @match http://www.eshukan.com/* // @match https://www.eshukan.com/* // @match https://www.wanweixueshu.com/* // @grant GM_xmlhttpRequest // @connect eshukan.com // @author Fomo // @license MIT // ==/UserScript== (function() { 'use strict'; // 如果在 eshukan.com,先检测是否403 if (location.hostname.includes("eshukan.com")) { GM_xmlhttpRequest({ method: "GET", url: window.location.href, onload: function(response) { if (response.status === 403) { console.warn("⚠️ E书刊403禁止访问,跳转到万维学术"); window.location.href = "https://www.wanweixueshu.com/index.html"; } }, onerror: function() { console.error("❌ 请求失败,可能无法检测403"); } }); } // 全站解除禁止复制 function unlockCopy() { document.querySelectorAll('[onselectstart],[oncopy],[oncontextmenu]').forEach(el => { el.onselectstart = null; el.oncopy = null; el.oncontextmenu = null; }); ['onselectstart', 'oncopy', 'oncontextmenu'].forEach(evt => { document.body[evt] = null; }); console.log("✅ 已解除复制限制"); } unlockCopy(); // 以下为原来的功能 function enhanceSearchBox() { let input = null, button = null; if (location.hostname.includes('eshukan.com')) { input = document.querySelector('#search input.text'); button = document.querySelector('#search input.btn'); if (!input) { input = document.querySelector('#Top1_search_TextBox1'); button = document.querySelector('#Top1_search_ImageButton1'); } } else if (location.hostname.includes('wanweixueshu.com')) { input = document.querySelector('#SearchForm input[name="keyword"]'); button = document.querySelector('#SearchForm input.key-btn'); } if (input && button) { input.focus(); input.addEventListener('focus', function() { if (input.placeholder) { input.setAttribute('data-old-placeholder', input.placeholder); input.placeholder = ''; } }); input.addEventListener('click', function() { if (input.value) { input.select(); } }); input.addEventListener('keydown', function(e) { if (e.key === 'Enter') { e.preventDefault(); button.click(); } if (e.key === 'Escape') { e.preventDefault(); input.value = ''; } }); } return input; } function enableListKeyboardNav(searchInput) { const items = Array.from(document.querySelectorAll('#allclass .onejinfo')); if (items.length === 0) return; let selectedIndex = -1; const style = document.createElement('style'); style.textContent = ` .onejinfo.selected { background-color: #ffeeba !important; border-left: 4px solid #ff9900 !important; } `; document.head.appendChild(style); function updateSelection(newIndex) { if (selectedIndex >= 0 && items[selectedIndex]) { items[selectedIndex].classList.remove('selected'); } selectedIndex = newIndex; if (selectedIndex >= 0 && selectedIndex < items.length) { items[selectedIndex].classList.add('selected'); items[selectedIndex].scrollIntoView({behavior: 'smooth', block: 'center'}); } } function findPaginationLink(rel) { let pageDiv = document.querySelector('#pageinfo'); if (pageDiv) { const links = Array.from(pageDiv.querySelectorAll('a')); const current = pageDiv.querySelector('a.active'); if (!current) { if (rel === 'prev') { const prevLink = links.find(a => a.textContent.includes('上一页')); return prevLink ? prevLink.href : null; } else if (rel === 'next') { const nextLink = links.find(a => a.textContent.includes('下一页')); return nextLink ? nextLink.href : null; } return null; } const currentIndex = links.indexOf(current); if (rel === 'prev') { for (let i = currentIndex - 1; i >= 0; i--) { if (links[i] && !links[i].classList.contains('active')) return links[i].href; } const prevLink = links.find(a => a.textContent.includes('上一页')); return prevLink ? prevLink.href : null; } else if (rel === 'next') { for (let i = currentIndex + 1; i < links.length; i++) { if (links[i] && !links[i].classList.contains('active')) return links[i].href; } const nextLink = links.find(a => a.textContent.includes('下一页')); return nextLink ? nextLink.href : null; } return null; } pageDiv = document.querySelector('.pageinfo'); if (pageDiv) { const links = Array.from(pageDiv.querySelectorAll('a')); const current = pageDiv.querySelector('a.active'); if (!current) return null; const currentIndex = links.indexOf(current); if (rel === 'prev') { for (let i = currentIndex - 1; i >= 0; i--) { if (links[i] && !links[i].classList.contains('active')) return links[i].href; } const leftArrowLink = links.find(a => a.querySelector('i.iconfont.icon-xzjt')); if (leftArrowLink) return leftArrowLink.href; } else if (rel === 'next') { for (let i = currentIndex + 1; i < links.length; i++) { if (links[i] && !links[i].classList.contains('active')) return links[i].href; } const rightArrowLink = links.find(a => a.querySelector('i.iconfont.icon-xyjt')); if (rightArrowLink) return rightArrowLink.href; } return null; } return null; } window.addEventListener('keydown', function(e) { const activeEl = document.activeElement; if (e.key === 'Enter' && selectedIndex >= 0) { e.preventDefault(); const link = items[selectedIndex].querySelector('a[target="_blank"], a'); if (link) { if (link.target === '_blank') { window.open(link.href, '_blank'); } else { window.location.href = link.href; } } return; } if (activeEl === searchInput) { if (e.key === 'ArrowDown') { e.preventDefault(); searchInput.blur(); updateSelection(0); } return; } if (e.key === 'ArrowDown') { e.preventDefault(); let nextIndex = selectedIndex + 1; if (nextIndex >= items.length) nextIndex = 0; updateSelection(nextIndex); } else if (e.key === 'ArrowUp') { e.preventDefault(); let prevIndex = selectedIndex - 1; if (prevIndex < 0) prevIndex = items.length - 1; updateSelection(prevIndex); } if (e.key === 'ArrowLeft' || e.key === 'ArrowRight') { const rel = e.key === 'ArrowLeft' ? 'prev' : 'next'; const url = findPaginationLink(rel); if (url) { e.preventDefault(); window.location.href = url; } } }); } window.addEventListener('load', function() { const searchInput = enhanceSearchBox(); enableListKeyboardNav(searchInput); // ESC 清空搜索框 window.addEventListener('keydown', function(e) { if (e.key === 'Escape') { let input = searchInput; if (!input || !document.body.contains(input)) { input = (function(){ if (location.hostname.includes('eshukan.com')) { return document.querySelector('#search input.text') || document.querySelector('#Top1_search_TextBox1'); } else if (location.hostname.includes('wanweixueshu.com')) { return document.querySelector('#SearchForm input[name="keyword"]'); } return null; })(); } if (input) { e.preventDefault(); input.value = ''; input.focus(); const selected = document.querySelector('.onejinfo.selected'); if (selected) selected.classList.remove('selected'); } } }, true); }); })();