找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 670|回复: 13

[油猴脚本] 粘贴链接时去除内容中的空格

[复制链接]

9

主题

8124

回帖

2万

积分

超级版主

(^^ゞ

积分
22784
发表于 2025-4-8 21:41:08 | 显示全部楼层 |阅读模式
在粘贴时,自动去除剪贴板中的链接内容中的空格:
  1. // ==UserScript==
  2. // @name         Remove spaces from links in the clipboard
  3. // @version      0.1.0
  4. // @description  Remove spaces
  5. // @author       dragonish
  6. // @namespace    https://github.com/dragonish
  7. // @license      GNU General Public License v3.0 or later
  8. // @match        *://*/*
  9. // @grant        none
  10. // ==/UserScript==

  11. (function () {
  12.   document.addEventListener('paste', evt => {
  13.     const clipboardData = evt.clipboardData;
  14.     if (clipboardData) {
  15.       const target = document.activeElement;
  16.       if (target && (target.tagName === 'INPUT' || target?.tagName === 'TEXTAREA')) {
  17.         let text = clipboardData.getData('text/plain');
  18.         if (text.startsWith('http:') || text.startsWith('https:') || text.startsWith('magnet:') || text.startsWith('ed2k:') || text.startsWith('torrent:') || text.startsWith('thunder:') || text.startsWith('thunderx:')) {
  19.           evt.preventDefault();
  20.           text = text.replace(/\s+/g, '');
  21.           target.value = text;
  22.         }
  23.       }
  24.     }
  25.   }, true);
  26. })();
复制代码

¯\(°_o)/¯
回复

使用道具 举报

45

主题

409

回帖

2548

积分

金牌会员

积分
2548
发表于 2025-4-10 12:30:34 | 显示全部楼层
Good job!支持一下💖
回复

使用道具 举报

29

主题

1661

回帖

8947

积分

论坛元老

积分
8947
发表于 2025-4-10 15:17:42 | 显示全部楼层
会不会有误杀?
回复

使用道具 举报

9

主题

8124

回帖

2万

积分

超级版主

(^^ゞ

积分
22784
 楼主| 发表于 2025-4-10 18:25:36 | 显示全部楼层
gh0ul 发表于 2025-4-10 15:17
会不会有误杀?

理论上会的,但脚本只处理以特定协议头开头字符串内容,一般不会有什么问题。
¯\(°_o)/¯
回复

使用道具 举报

29

主题

1661

回帖

8947

积分

论坛元老

积分
8947
发表于 2025-5-1 18:17:25 | 显示全部楼层
S8F8ry 发表于 2025-4-10 18:25
理论上会的,但脚本只处理以特定协议头开头字符串内容,一般不会有什么问题。 ...

经测试,这是全方位误杀,因为看起来原理不是把剪贴板里面的空格清掉,也不是在一个临时空间粘贴去掉空格后重新复制(似乎这个办不到),而是把当前输入框的其它字符全部清掉,那么如果输入了其他文字,后面要跟这个链接,贴上去就会变成输了一堆内容全部不见了,只有这个链接
回复

使用道具 举报

9

主题

8124

回帖

2万

积分

超级版主

(^^ゞ

积分
22784
 楼主| 发表于 2025-5-1 22:53:08 | 显示全部楼层
gh0ul 发表于 2025-5-1 18:17
经测试,这是全方位误杀,因为看起来原理不是把剪贴板里面的空格清掉,也不是在一个临时空间粘贴去掉空格 ...

这么说其实可以改成判断内容里是不是有其他文本已经跳过。
¯\(°_o)/¯
回复

使用道具 举报

45

主题

409

回帖

2548

积分

金牌会员

积分
2548
发表于 2025-5-2 10:43:26 | 显示全部楼层
gh0ul 发表于 2025-5-1 18:17
经测试,这是全方位误杀,因为看起来原理不是把剪贴板里面的空格清掉,也不是在一个临时空间粘贴去掉空格 ...

把第22行的
target.value = text;
改成  
target.value += text;  
就行了
😁
回复

使用道具 举报

45

主题

409

回帖

2548

积分

金牌会员

积分
2548
发表于 2025-5-2 10:57:38 | 显示全部楼层
本帖最后由 coult3 于 2025-5-2 11:47 编辑

只是脚本对于下面的代码起作用:
  1. https://www.ce ntbrowser.cn/
复制代码


但是对于在http之间加空格的就失效了,比如:


  1. htt ps://w ww.centbrowser.cn/
复制代码
小改了一下:第19行改为检查文本的前12个字符是否包含 :// 和 .:

  1. (function () {
  2.   document.addEventListener('paste', evt => {
  3.     const clipboardData = evt.clipboardData;
  4.     if (clipboardData) {
  5.       const target = document.activeElement;
  6.       if (target && (target.tagName === 'INPUT' || target?.tagName === 'TEXTAREA')) {
  7.         let text = clipboardData.getData('text/plain');
  8.         if (text.substring(0, 12).includes('://') && text.includes('.')) {
  9.           evt.preventDefault();
  10.           text = text.replace(/\s+/g, '');
  11.           target.value += text;
  12.         }
  13.       }
  14.     }
  15.   }, true);
  16. })();
复制代码

但是也有小问题,如果前面的空格太多了就不行了😂
ht          tps://w ww.centbrowser.cn/







回复

使用道具 举报

29

主题

1661

回帖

8947

积分

论坛元老

积分
8947
发表于 2025-5-2 11:56:39 | 显示全部楼层
coult3 发表于 2025-5-2 10:57
只是脚本对于下面的代码起作用:

感谢,试用看看
回复

使用道具 举报

9

主题

8124

回帖

2万

积分

超级版主

(^^ゞ

积分
22784
 楼主| 发表于 2025-5-2 22:22:41 | 显示全部楼层
coult3 发表于 2025-5-2 10:57
只是脚本对于下面的代码起作用:

😝 确实没有考虑到协议名里有空格的情况。
¯\(°_o)/¯
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|百分浏览器论坛

GMT+8, 2025-6-8 04:29 , Processed in 0.016712 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表