You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chrome扩展选中文本拼接URL残留双引号无法移除问题求助

问题根源

你的代码存在两个核心错误导致引号无法正常移除:

  • 操作顺序逻辑倒置:你先对JSON.stringify()的结果执行了URI编码,此时原生双引号已经被转为URI编码格式%22,你的正则匹配的"是HTML实体格式的引号,完全无法匹配到编码后的引号内容,因此替换规则完全不生效。
  • 冗余操作引入多余引号:info.selectionText本身就是字符串类型,完全不需要调用JSON.stringify()处理,这个方法会主动给字符串首尾包裹双引号,属于不必要的额外操作。

最优修复方案

直接删除冗余的JSON.stringify()调用即可,不需要额外的引号替换逻辑,修改后代码如下:

// 直接对原生选中内容编码即可,没有多余引号需要处理
var EncodedSelectedText = encodeURIComponent(info.selectionText);

if (RITMRegExPattern.test(info.selectionText)) {
   chrome.tabs.create({
        url: 'https://redacted-site-name.com/sc_req_item_list.do?sysparm_query=numberLIKE'+EncodedSelectedText
   });
}else if . . .

兼容保留JSON.stringify的修复方案

如果你有特殊需求必须保留JSON.stringify()调用,可以调整操作顺序或修改正则匹配规则,二选一即可:

  1. 先替换引号再执行URI编码
var OriginalText = JSON.stringify(info.selectionText).replace(/^"|"$/g, '');
var EncodedSelectedText = encodeURIComponent(OriginalText);
  1. 编码后匹配URI格式的引号进行替换
var EncodedSelectedText = encodeURIComponent(JSON.stringify(info.selectionText));
var NoQuotes = EncodedSelectedText.replace(/^%22|%22$/g, '');

内容的提问来源于stack exchange,提问作者James

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 02:27:01