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

如何强制网站所有链接(含iframe、广告)在新标签页打开?

强制所有链接(含iframe、广告)在新标签页打开的解决方案

你遇到的问题核心是:普通的链接遍历只能处理当前页面已加载的链接,而动态加载的广告、跨域iframe里的链接无法被直接修改。以下是可行的代码方案,可添加在页面的<head>标签末尾(用<script>包裹)或页面任意<div>中:

核心代码(处理当前页面及同源iframe)

// 给单个链接强制设置新标签页打开,并添加安全属性
function setLinkBlank(link) {
  link.target = '_blank';
  link.rel = link.rel ? `${link.rel} noopener noreferrer` : 'noopener noreferrer';
}

// 遍历指定文档内的所有链接
function processAllLinks(doc) {
  Array.from(doc.links).forEach(setLinkBlank);
}

// 监听文档DOM变化,自动处理新添加的链接
function observeDomChanges(doc) {
  const observer = new MutationObserver((mutations) => {
    mutations.forEach(mutation => {
      mutation.addedNodes.forEach(node => {
        if (node.tagName === 'A') {
          setLinkBlank(node);
        } else if (node.querySelectorAll) {
          Array.from(node.querySelectorAll('a')).forEach(setLinkBlank);
        }
      });
    });
  });

  observer.observe(doc.body, { childList: true, subtree: true });
}

// 初始化处理当前页面链接
processAllLinks(document);
observeDomChanges(document);

// 处理同源iframe内的链接
function processIframes() {
  Array.from(document.querySelectorAll('iframe')).forEach(iframe => {
    iframe.onload = function() {
      try {
        const iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
        processAllLinks(iframeDoc);
        observeDomChanges(iframeDoc);
      } catch (e) {
        // 跨域iframe无法访问,忽略
      }
    };
  });
}

processIframes();

跨域广告iframe的特殊处理

对于Adsense、Taboola这类第三方跨域广告iframe,由于浏览器同源策略限制,无法直接修改其内部链接。可以尝试给iframe添加sandbox属性,允许用户点击时在新标签页打开链接:

<!-- 修改现有iframe标签,添加sandbox属性(需保留广告必需的权限) -->
<iframe sandbox="allow-scripts allow-same-origin allow-top-navigation-by-user-activation" src="广告链接"></iframe>

注意:sandbox会限制iframe的权限,可能影响广告正常加载,需根据广告平台的要求调整权限列表(比如allow-popups等)。

为什么之前的方法无效?

  1. 你用的document.links遍历只处理了页面加载时已存在的链接,动态加载的广告链接不会被处理;
  2. <base target="_blank">的优先级低于链接自身的target属性,若广告链接指定了_self,会覆盖base的设置;
  3. window.open需要主动触发,无法拦截所有广告的点击事件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 20:39:27