能原地解析的链接绝不在后台访问,去除重定向的过程快速且高效,平均时间在0.02ms~0.05ms之间。几乎没有任何在后台访问网页获取去重链接的操作,一切都在原地进行,对速度精益求精。去除网页内链接的重定向,具有高准确性和高稳定性,以及相比同类插件更低的时间占用。并且保证去除重定向的有效性,采用三级方案,原地解析->自动跳转->后台访问,保证了一定能去除重定向链接
< Feedback on 去除链接重定向
1.0.0-2.5.5版本最终解决的百度undefined bug复盘
async resolveRedirect(element) { const href = element.href; if (!this.processedUrls.has(href)) { // 创建一个新的 Promise 并存储在 Map 中 let resolvePromise; const promise = new Promise((resolve) => { resolvePromise = resolve; }); this.processedUrls.set(href, promise); try { const res = await GM.xmlHttpRequest({ method: "GET", url: href, anonymous: true, }); if (res.finalUrl) { const url = res.finalUrl; this.processedUrls.set(href, url); element.href = url; } else { this.processedUrls.delete(href); // 请求失败时删除占位符 } } catch (error) { console.error("请求失败:", error); this.processedUrls.delete(href); // 请求失败时删除占位符 } finally { resolvePromise(); // 请求完成后解析 Promise } } else { const cachedValue = this.processedUrls.get(href); if (cachedValue instanceof Promise) { // 如果是 Promise,等待其完成 await cachedValue; element.href = this.processedUrls.get(href); } else { // 否则直接使用缓存值 element.href = cachedValue; } } } };
在map里存储promise拦截相同的链接访问,在res挂起后得到信息前通过让其他访问等待promise最终结果达到目的。
Sign in to post a reply.
1.0.0-2.5.5版本最终解决的百度undefined bug复盘
在map里存储promise拦截相同的链接访问,在res挂起后得到信息前通过让其他访问等待promise最终结果达到目的。