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

基于jQuery修改论坛签名图片路径以切换高分辨率图

批量替换论坛签名图片为高分辨率版本

背景与需求

  • 仅掌握基础jQuery,编程能力有限
  • 论坛支持自定义加载jQuery代码,但页面内容为动态加载(无法控制)
  • 需要实现:页面加载及动态内容更新时,自动将帖子内的用户签名低分辨率图片替换为高分辨率版本,不处理其他图片
  • 单个用户的替换逻辑已实现,但不会批量循环处理所有用户

路径对应规则

低分辨率路径格式:

https://api.domain.com/signatures/[用户名]@[子域名]/SizedImage/150/150/[图片文件名].jpeg

高分辨率路径格式:

https://[子域名]-[用户名].domain.com/[图片文件名].jpeg

示例:

用户1低分辨率:https://api.domain.com/signatures/user1@subdomain1/SizedImage/150/150/IMG_ABC.jpeg
用户1高分辨率:https://subdomain1-user1.domain.com/IMG_ABC.jpeg
用户2低分辨率:https://api.domain.com/signatures/user2@subdomain2/SizedImage/150/150/IMG_DEF.jpeg
用户2高分辨率:https://subdomain2-user2.domain.com/IMG_DEF.jpeg

解决方案代码

// 等待页面初始DOM加载完成
$(document).ready(function() {
  // 定义统一处理签名图片的函数
  function replaceSignatureImages() {
    // 筛选所有签名图片:src包含指定特征字符串的img元素
    $('img[src*="api.domain.com/signatures/"][src*="SizedImage/150/150/"]').each(function() {
      const $currentImg = $(this);
      const lowResUrl = $currentImg.attr('src');
      
      // 用正则提取用户名、子域名、图片文件名
      const urlMatch = lowResUrl.match(/signatures\/([^@]+)@([^\/]+)\/SizedImage\/150\/150\/(.+)$/);
      
      if (urlMatch) {
        // 解构正则匹配到的分组内容
        const [_, username, subdomain, fileName] = urlMatch;
        
        // 拼接高分辨率路径
        const highResUrl = `https://${subdomain}-${username}.domain.com/${fileName}`;
        
        // 替换图片的src属性
        $currentImg.attr('src', highResUrl);
        
        // 如果图片被a标签包裹,同步替换a标签的href
        const $parentLink = $currentImg.closest('a');
        if ($parentLink.length) {
          $parentLink.attr('href', highResUrl);
        }
      }
    });
  }

  // 页面初始加载时执行一次替换
  replaceSignatureImages();

  // 监听DOM变化,处理动态加载的新内容
  const domObserver = new MutationObserver((mutations) => {
    mutations.forEach(mutation => {
      // 当有新节点添加到DOM时,重新执行替换
      if (mutation.addedNodes.length > 0) {
        replaceSignatureImages();
      }
    });
  });

  // 监听body下所有层级的DOM变化
  domObserver.observe(document.body, { childList: true, subtree: true });
});

代码说明

  • 筛选签名图片:通过属性选择器[src*="xxx"]精准定位签名图,避免误改其他图片
  • 批量处理:用.each()循环遍历所有符合条件的图片,自动处理每个用户的签名
  • 正则提取信息:通过正则表达式从低分辨率路径中自动拆分出用户名、子域名和文件名,适配任意用户
  • 动态内容兼容:使用MutationObserver监听DOM变化,论坛新加载的帖子内容会自动触发替换逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 07:35:54