在浏览器的小书签中使用 JavaScript 以正则表达式编辑 URL

Using JavaScript in Browser's Bookmarklet to Edit the URL with Regex

所以我知道可以 运行 JavaScript 通过将它们存储在浏览器的书签中(又名 bookmarklet),但我不确定是否可以使用 bookmarklet自动编辑当前 URL(然后将您带到新的 URL)。

我想做什么:

在URL中,替换字符串

之前的所有内容(并包括
/image/thumb/

https://a1.mzstatic.com/us/r1000/0/

并删除(并包括last

之后的所有内容
/

例如,下面的 URL:

https://is2-ssl.mzstatic.com/image/thumb/Music/v4/4e/61/09/4e610911-7e0e-d348-8246-11ef6ffe00ab/886443607118.jpg/540x540bb.webp

应该成为(并重定向到)

https://a1.mzstatic.com/us/r1000/0/Music/v4/4e/61/09/4e610911-7e0e-d348-8246-11ef6ffe00ab/886443607118.jpg

点击带有 JavaScript 的书签后。


更多示例:

https://is2-ssl.mzstatic.com/image/thumb/Features122/v4/b0/26/80/b0268001-9527-3477-1df2-c68f02271a9f/ffe8be4a-2798-4a68-b691-9a91edb1c177.png/216x216sr.webp

应该成为(并重定向到)

https://a1.mzstatic.com/us/r1000/0/Features122/v4/b0/26/80/b0268001-9527-3477-1df2-c68f02271a9f/ffe8be4a-2798-4a68-b691-9a91edb1c177.png

https://is4-ssl.mzstatic.com/image/thumb/Video124/v4/ac/c2/b0/acc2b0a3-8105-2f22-2b0d-ea274223e959/Jobe81235fa-44f7-43f8-a7d6-421093c13e0b-110141253-PreviewImage_preview_image_nonvideo_sdr-Time1616098999993.png/300x300.jpg

应该成为(并重定向到)

https://a1.mzstatic.com/us/r1000/0/Video124/v4/ac/c2/b0/acc2b0a3-8105-2f22-2b0d-ea274223e959/Jobe81235fa-44f7-43f8-a7d6-421093c13e0b-110141253-PreviewImage_preview_image_nonvideo_sdr-Time1616098999993.png

使用 String.prototype.match(regExp) 获取您想要的 url 部分,然后将 url 部分与您的 url 前缀组合。

function replaceUrl(url) {
   const prefix = 'https://a1.mzstatic.com/us/r1000/0';
   const lastPart = url.split("/image/thumb/")[1];
   const match = lastPart ? lastPart.slice(0, lastPart.lastIndexOf("/")) : null;
   const targetUrl = match ? `${prefix}/${match}` : url;
   return targetUrl;
}
const targetUrl = replaceUrl('https://is2-ssl.mzstatic.com/image/thumb/Music/v4/4e/61/09/4e610911-7e0e-d348-8246-11ef6ffe00ab/886443607118.jpg/540x540bb.webp');

添加小书签,小书签的脚本如下:

javascript:(function(){
  function replaceUrl(url) {
   const prefix = 'https://a1.mzstatic.com/us/r1000/0';
   const lastPart = url.split("/image/thumb/")[1];
   const match = lastPart ? lastPart.slice(0, lastPart.lastIndexOf("/")) : null;
   const targetUrl = match ? `${prefix}/${match}` : url;
    return targetUrl;
 }
 const targetUrl = replaceUrl(location.href);
 window.open(targetUrl,"_blank");
})()

location.href是当前标签的url,你可以改成任何你需要的(可能是url来自当前页面的链接等等)。 window.open() 的第二个参数可以是 _blank(在新选项卡中打开)或 _self(在当前选项卡中打开)