NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name 公益学术平台-实现URL传参检索 // @namespace http://tampermonkey.net/ // @version 0.2.5 // @description 本工具不留存、不上传任何操作信息,脚本初衷仅供学习使用,因网站搜索较为繁琐,旨为快速进行学术检索参考 // @author PeisenXu // @match https://pubscholar.cn/explore?key=* // @icon https://pubscholar.cn/static/app-logo-cas.png // @grant none // @license GPL-3.0-or-later // ==/UserScript== (function() { 'use strict'; window.onload = function() { console.log("页面加载完成!"); function checkInputExistence() { var input = document.querySelector('#app > div.App__root > div > div.base-scrollbar__wrap > div > header > div.AppHeader__inner > div.AppHeaderSearchBar > div.AppHeaderSearchBar__input > span > span > div > div > div.base-input.base-input--suffix > input'); if (input) { // 找到了输入元素,执行你想要的操作 console.log("Input found!"); const url = new URL(window.location.href); const searchParams = url.searchParams; // 关键词参数 var key = searchParams.get("key"); // 回源站功能地址配置 var service = searchParams.get("service"); // 模拟点击input框 input.click(); // 模拟鼠标悬停在目标元素上 input.dispatchEvent(new MouseEvent('mouseover', { bubbles: true, cancelable: true })); setTimeout(function() { // 模拟键盘输入 var textToInput = key; input.value = textToInput; // 触发输入框的输入事件(例如 'input' 或 'change') var inputEvent = new Event('input', { bubbles: true }); input.dispatchEvent(inputEvent); // 选择 class 为 'base-icon-search' 的元素 const element = document.querySelector('.base-icon-search'); // 创建一个新的 MouseEvent 对象,模拟鼠标左键的 keydown 事件 var mouseEvent = new MouseEvent('mousedown', { buttons: 1, // 表示左键 clientX: 0, // 鼠标的X坐标,这里设为0,你可以根据需要进行调整 clientY: 0, // 鼠标的Y坐标,这里设为0,你可以根据需要进行调整 }); // 如果元素存在,则触发该事件 if (element) { element.dispatchEvent(mouseEvent); } }, 100); // 获取vue一次性打包编码 var divElement = document.querySelector('.AppNav__item'); var dataKey = "data-" + Object.keys(divElement.dataset).find(i=>i.startsWith('v-')); var element = document.querySelector('.AppHeader__inner'); // 选择具有 class="AppHeader__inner" 的元素 if (element) { // 确保元素存在 element.style.width = '1240px'; // 设置元素的 width 属性为 1240px } var newDiv = document.createElement('div'); newDiv.className = 'AppNav__item'; newDiv.setAttribute(dataKey, ''); var newLink = document.createElement('a'); newLink.textContent = '回源站'; newLink.href = service == null ? 'http://192.168.210.12/sgeri' : service; newLink.className = 'AppNav__itemLink router-link-active'; newLink.setAttribute(dataKey, ''); // 添加样式属性 newLink.style.display = 'inline-block'; newLink.style.fontSize = '15px'; newLink.style.padding = '0 15px'; newLink.style.color = '#fff'; newLink.style.position = 'relative'; newLink.style.opacity = '.8'; newLink.style.transition = 'opacity .3s'; newLink.style.webkitTransition = 'opacity .3s'; // 为了兼容WebKit浏览器(如Safari和旧版Chrome) newDiv.appendChild(newLink); var container = document.querySelector('.AppNav'); if (container.firstChild) { container.insertBefore(newDiv, container.firstChild); } else { container.appendChild(newDiv); } clearInterval(intervalId); // 清除定时器,停止检查 } else { console.log("Input Not found!"); } } var intervalId = setInterval(checkInputExistence, 500); // 每秒检查一次 } })();