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

如何移除Blogger网址中的年份与月份信息

解决Blogger链接移除年月后跳转延迟+404问题

你之前用JS跳转的方式之所以会出现先到404再跳转的问题,是因为点击链接时会先触发原URL的请求,之后才执行JS的跳转逻辑。要解决这个问题,核心是让用户点击的直接就是移除年月后的正确链接,而不是点击后再修改跳转地址。

方案1:提前修改页面所有静态链接的href

在DOM加载完成后,直接遍历页面内的Blogger链接,把href里的/YYYY/MM/部分替换掉,用户点击时直接访问修正后的地址:

document.addEventListener('DOMContentLoaded', function() {
  // 筛选所有指向Blogger域名的链接
  const bloggerLinks = document.querySelectorAll('a[href*=".blogspot.com/"]');
  
  bloggerLinks.forEach(link => {
    const originalUrl = link.href;
    // 正则匹配并移除年份和月份路径段
    const cleanedUrl = originalUrl.replace(/\/\d{4}\/\d{2}\//, '/');
    
    if (cleanedUrl !== originalUrl) {
      link.href = cleanedUrl;
      // 如果链接文本显示的是原URL,也可以同步更新文本
      // if (link.textContent.trim() === originalUrl) link.textContent = cleanedUrl;
    }
  });
});

方案2:用事件委托处理动态加载的链接

如果页面有动态生成的链接(比如滚动加载、异步渲染的内容),用事件委托监听点击事件,在跳转前直接修改目标地址:

document.addEventListener('click', function(e) {
  // 找到被点击的Blogger链接(支持嵌套元素的情况)
  const targetLink = e.target.closest('a[href*=".blogspot.com/"]');
  
  if (targetLink) {
    const originalUrl = targetLink.href;
    const cleanedUrl = originalUrl.replace(/\/\d{4}\/\d{2}\//, '/');
    
    if (cleanedUrl !== originalUrl) {
      e.preventDefault(); // 阻止原链接的默认跳转行为
      window.location.href = cleanedUrl; // 直接跳转到修正后的地址
    }
  }
});

这两种方案都不会触发原URL的请求,也就不会出现404页面的延迟跳转问题,前者适合静态页面,后者兼顾动态内容场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 08:42:11