Firefox中TortoiseSVN拖拽文件到textarea重复接收问题求助
解决Firefox中拖拽TortoiseSVN文件到textarea重复接收的问题
这个问题我之前碰到过类似的场景,核心原因大概率是Firefox 72.0.2这个旧版本在处理外部应用(比如TortoiseSVN提交窗口)的拖拽事件时,会把文件的路径文本和文件对象同时触发内容插入,导致重复接收;也有可能是TortoiseSVN的拖拽数据格式在Firefox下被解析成了多次传递。下面给你几个可行的解决办法:
1. 手动监听拖拽事件,过滤重复内容
通过JavaScript拦截drop和dragover事件,手动处理文件并阻止默认行为,避免浏览器自动插入重复内容。示例代码如下:
const targetTextarea = document.querySelector('textarea'); // 阻止dragover默认行为,否则drop事件不会触发 targetTextarea.addEventListener('dragover', (e) => { e.preventDefault(); }); // 处理drop事件,过滤重复文件 targetTextarea.addEventListener('drop', (e) => { e.preventDefault(); // 阻止浏览器自动插入内容的默认行为 const processedFileNames = new Set(); // 用Set记录已处理的文件名,避免重复 for (const file of e.dataTransfer.files) { if (!processedFileNames.has(file.name)) { processedFileNames.add(file.name); // 这里根据需求添加文件路径或内容到textarea targetTextarea.value += `${file.path}\n`; // file.path仅在部分环境可用,若需要内容可结合FileReader读取 } } });
这段代码会确保每个文件只被处理一次,不管Firefox触发多少次事件。
2. 升级Firefox到最新版本
Firefox 72.0.2是2020年的旧版本,后续官方已经修复了很多拖拽事件相关的bug。直接升级到最新稳定版,大概率能直接解决这个问题——这是最省心的方案,毕竟旧版本不仅有这个问题,还可能存在安全漏洞。
3. 调整TortoiseSVN的拖拽设置
打开TortoiseSVN的设置面板,找到「提交」相关的配置项,看看是否有关于拖拽文件时的行为选项(比如是否同时传递文件路径文本和文件对象)。尝试关闭文本传递的选项,只让它传递文件对象,这样Firefox就不会接收到重复的内容了。
内容的提问来源于stack exchange,提问作者Zuyas
相关产品推荐
相关产品推荐

