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

开发Chrome扩展跨源获取iframe内标签报错,应在哪页添加运行代码?

报错原因

浏览器同源策略默认要求协议、域名、端口完全一致才允许跨帧访问DOM,你的两个站点属于同主域不同子域,默认不满足同源要求,所以触发跨域拦截。

可选方案及对应代码添加位置

方案1:同主域降域方案(需要修改业务站点代码)

这个方案仅适用于同根主域的场景,你需要同时在两个页面添加代码:

  • 在父页面 https://aaa.xxx.com 的全局JS逻辑最开头添加:
    document.domain = 'xxx.com';
  • 在iframe页面 https://bbb.xxx.com 的全局JS逻辑最开头添加:
    document.domain = 'xxx.com';
    添加完成后父页面就可以直接获取iframe内的DOM节点。

方案2:Chrome扩展专属方案(无需修改业务站点代码)

作为Chrome扩展开发者更推荐这个方案,你只需要在你的扩展代码中做调整即可,不需要改动业务站点的原有逻辑:

  1. 在manifest.json中声明两个子域的内容脚本注入权限,示例配置:
{
  "content_scripts": [
    {
      "matches": ["https://*.xxx.com/*"],
      "js": ["content-script.js"],
      "all_frames": true
    }
  ]
}
  1. 在内容脚本content-script.js中分别处理父页和iframe的逻辑:
    • 运行在iframe中的内容脚本直接获取对应DOM信息,通过chrome.runtime.sendMessage把数据传给扩展后台
    • 运行在父页中的内容脚本从扩展后台获取iframe传递过来的DOM数据即可使用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:27:00