篡改猴脚本:选中文本使用 Google 搜索按钮

99 天前
 infun

使用篡改猴脚本给网页上选中文本添加一个使用 Google 的搜索按钮

// ==UserScript==
// @name         搜索选中|Search Selection
// @namespace    http://tampermonkey.net/
// @version      1.2
// @description  给选中文本添加一个使用 Google 的搜索按钮|Add a search button over selected text to search on Google
// @author       INFUN 指挥智谱清言开发
// @match        *://*/*
// ==/UserScript==

(function() {
    'use strict';

    // 创建搜索按钮
    const searchButton = document.createElement('button');
    searchButton.style.cssText = `
        position: fixed;
        background-color: blue;
        color: white;
        padding: 3px 6px;
        border-radius: 15px;
        cursor: pointer;
        font-size: 12px;
        z-index: 9999;
        display: none;
    `;
    searchButton.textContent = '去搜索';
    document.body.appendChild(searchButton);

    // 处理选中文本
    document.addEventListener('mouseup', function() {
        const selection = window.getSelection();
        if (selection.rangeCount > 0 && selection.toString().trim() !== '') {
            const range = selection.getRangeAt(0);
            const rect = range.getBoundingClientRect();
            searchButton.style.top = `${rect.top - 30}px`;
            searchButton.style.left = `${rect.left + (rect.width / 2) - 35}px`;
            searchButton.style.display = 'block'; // 显示按钮
            searchButton.onclick = function() {
                const query = encodeURIComponent(selection.toString());
                window.open(`https://www.google.com/search?q=${query}&ie=utf-8&oe=utf-8&cr=countrySG`, '_blank');
                searchButton.style.display = 'none'; // 隐藏按钮
            };
        } else {
            // 如果没有选中文本或选中的是空白,则隐藏按钮
            searchButton.style.display = 'none';
        }
    });

    // 点击非按钮区域或按下 Esc 键时隐藏按钮
    document.addEventListener('mousedown', function(event) {
        if (event.target !== searchButton) {
            searchButton.style.display = 'none';
        }
    });

    document.addEventListener('keydown', function(event) {
        if (event.key === 'Escape') {
            searchButton.style.display = 'none';
        }
    });
})();
694 次点击
所在节点    分享发现
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1062042

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX