您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
更便捷地使用搜索引擎语法,以实现一些过滤功能
// ==UserScript== // @namespace https://greasyfork.org/zh-CN/users/1231460-3zllm // @name 搜索引擎语法插件 // @name:en search engine grammer plugins // @name:zh 搜索引擎语法插件 // @description 更便捷地使用搜索引擎语法,以实现一些过滤功能 // @description:en More convenient use of search engine syntax to achieve some filtering functions // @description:zh 更便捷地使用搜索引擎语法,以实现一些过滤功能 // @license MIT // @include /https?://www\.google\.com[\w.]*(/search.*)?/ // @include /https?://www\.bing\.com(/search.*)?/ // @include /https?://cn\.bing\.com(/search.*)?/ // @version 0.0.1.20250118083902 // ==/UserScript== (function(){ class Handler{ getInputElement(){} /** * * @param {Element} e 输入框 * @param {string} value 更新后的文本 */ setSearchValue(e, value){} /** * @returns 元素中的搜索字符 */ getSearchValue(e){} } /** 搜索框输入元素 */ const Bing = { getInputElement: () => document.querySelector("#sb_form_q"), setSearchValue: (e, value) => e.value = value, getSearchValue: (e) => e.value, } const Google = { // google 使用 textarea getInputElement: () => document.querySelector("#APjFqb"), setSearchValue: (e, value) => e.value = value, getSearchValue: (e) => e.value } /** * 搜索引擎语法 的文本 * TODO 准备通过 UI 来接收用户输入 */ let textPatch = "" /** 基本功能测试 */ class Test{ appendText = " 我" static testGetText() { document.body.onkeyup = (ev) => { let code = ev.code console.log(code); if (code == "F1") { alert(getBingInputElement().value) } } } /** * 输入内容时,添加搜索语法 */ static modifyText() { getBingInputElement().oninput = (ev) => { let e = getBingInputElement() let v = e.value if (!v.endsWith(appendText)) { e.value += appendText console.log("appended! ", e.value); }else{ console.log(e.value) } } } } /** * 双向触发的输入值修改 * 双向:输入内容 与 搜索选项文本补丁 */ class Main { static start(){ textPatch = " " textPatch += "-site:csdn.net " textPatch += "-site:zhihu.com " Main.addInputListener(Bing) Main.addInputListener(Google) } /** * 输入内容 触发的输入值修改 * * @param {Handler} handler 任意网站处理器 */ static addInputListener(handler){ let element = handler.getInputElement() if (element === undefined || element === null) { console.log("WARN: 无输入元素"); return } element.oninput = (ev) => { let e = handler.getInputElement() let cursorStart = e.selectionStart // 光标初始位置 let v = handler.getSearchValue(e) console.debug(`原始 str: ${v}`); if (!v.endsWith(textPatch)) { handler.setSearchValue(e, v + textPatch) console.debug(`更新后: ${v + textPatch}`); // 重新定位光标 e.selectionStart = cursorStart e.selectionEnd = cursorStart console.debug(`更新光标位置 cursorIndex:[${cursorStart}]`); }else{ // console.log(e.value) } } console.debug("找到搜索框元素,持续监听中...") } } Main.start() })();