您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
用鼠标中键选择文本
- // ==UserScript==
- // @name select text by middle button
- // @name:zh-CN 中键选择文本
- // @namespace http://tampermonkey.net/
- // @version 0.1
- // @description select the text by middle button
- // @description:zh-CN 用鼠标中键选择文本
- // @author Harytfw
- // @match http://*/*
- // @match https://*/*
- // @grant none
- // ==/UserScript==
- (function() {
- 'use strict';
- var x1=0.0,y1=0.0;
- const MIN_MOVEMENT = 10;
- const se = document.getSelection();
- const LEFT_BUTTON = 0,
- MIDDLE_BUTTON = 1;
- const STATE_INIT = 0,
- STATE_READY = 1,
- STATE_WORKING = 2,
- STATE_FINISH = 3;
- let state = STATE_INIT;
- function mousedown(e) {
- if(e.button!==MIDDLE_BUTTON){
- return;
- }
- x1=e.clientX;
- y1=e.clientY;
- const range = document.caretPositionFromPoint(x1, y1);
- se.setBaseAndExtent(range.offsetNode,range.offset,range.offsetNode,range.offset);
- state = STATE_READY;
- }
- var x2=0.0,y2=0.0;
- function mouseup(e){
- if(e.button===MIDDLE_BUTTON){
- if(state===STATE_WORKING) state=STATE_FINISH;
- else state=STATE_INIT;
- }
- }
- function mousemove(e){
- if(state===STATE_INIT)return;
- x2=e.clientX;
- y2=e.clientY;
- if(Math.hypot(x1-x2,y1-y2)>=MIN_MOVEMENT){
- if(state===STATE_WORKING || state===STATE_READY){
- const range = document.caretPositionFromPoint(x2, y2);
- if(se.anchorNode!== null)se.extend(range.offsetNode,range.offset);
- state=STATE_WORKING;
- }
- }
- else{
- state=STATE_READY;
- }
- }
- function click(e){
- if(e.button===MIDDLE_BUTTON && state==STATE_FINISH){
- e.preventDefault();
- }
- state=STATE_INIT;
- }
- document.addEventListener('mouseup', mouseup);
- document.addEventListener('mousedown', mousedown);
- document.addEventListener('mousemove', mousemove);
- document.addEventListener('click', click);
- })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址