96SEO 2026-05-07 07:30 1
在前端工程里“跨域”常常像一只隐形的怪兽,让人头疼不Yi。我们习惯性地去寻找 WebSocket、ServiceWorker 或者Zui新的 BroadcastChannel,却忽略了一件古老却可靠的武器——window.name。别小kan它,它天生具备“页面换血而不失记忆”的特性,只要掌握了正确的使用姿势,就Neng在不借助额外库的情况下完成数据搬运。

早期的跨域方案大多围绕CORS、JSONP、iframe + postMessage、服务器转发展开。每一种dou有自己的门槛:CORS 要后端配合;JSONP 只Neng GET;postMessage 虽灵活,却需要双方dou准备好监听代码。于是有人问:“有没有办法,让两个页面在同一个标签页里跳来跳去,却还Neng把信息藏在某个角落?”答案正是 window.name——它本是用来标识窗口标题的属性,却因为「刷新或导航后仍然保留」这一奇特行为,被挖掘为“临时存储”。
持久性:只要窗口未被关闭,无论 URL 如何变geng,window.name dou保持原值。
容量惊人:大多数浏览器允许约 2 MB 字符串,这比 Cookie和 URL 参数dou宽裕得多。
SAME‑ORIGIN 限制:
父子窗口之间读取对方的 .nameE 时只要两者同源即可,否则会抛出安全异常。
IFrame 刷新影响范围: 刷新的是哪个 iframe,它自己的 name 会被清空;父窗口或兄弟 iframe 的 name 完全不受牵连。
二、实现思路——一步步把数据塞进 name 再取出来
下面用Zui常见的「父页 + 子 iframe」场景演示。思路其实hen直接:① 父页给子 iframe 设置一个唯一标识;② 子页把想要回传的数据写进自己的 a.html – 父页面: 父窗口当前 name: b.html – 子页面:
运行上述两文件后你会kan到:点击「发送数据给父窗口」按钮后子页把 JSON 字符串写进自己的
SAME‑ORIGIN 必须满足:
Ru果父子之间不是同源,你只Neng先让子 iframe 跳转到一个与你同源的“中转页”,该页再读取原始 Name 长度限制:
虽然理论上Ke以达到 2 MB,但实际浏览器对单次赋值有字符数上限。若超出,会被截断或抛异常,务必提前Zuo长度校验。 Avoid accidental overwrite:
因为 Sensitive data 警惕泄露:
任何打开同一标签页的新窗口douNeng读到 alert.window.name = "...";
完整代码示例
子页面 - 把数据塞进 window.name
.name.contentWindow.name\<\/co de>成功拿到这段文字,实现了一次“跨域”数据回传——即使 b.html 实际托管在完全不同的域名,只要Zui终再切回同源 page,也Neng顺利读取。
function setChannel{window=JSON.stringify;}
function getChannel{return JSON.parse;}
| window.name | postMessage | BroadcastChannel | |
|---|---|---|---|
| 兼容性 | ✓ | ✓ | ✓ |
| 容量 | =2 MB≤<10 KB | ≤<10 KB | |
| 跨域支持 | ✔✔ | ✔||
| 实时性 | ✘✔ |
从表格Ke以kan出,若你追求「实时双向」且项目Yi经使用 ES6+ 环境,那么毫无疑问应该首选
*老旧浏览器*无法使用 postMessage,而 window .name 在这些环境里依旧可用;
*极大数据量*:一次性传输几百 KB 到 MB 时用 localStorage 或 cookie dou显得捉襟见肘,而 window .name Neng一次搞定;
*无服务器支撑*:纯前端项目没有后端接口时Ke以借助 name Zuo临时缓存。
五、Zui佳实践清单
**初始化**:在入口脚本里统一为每个窗口分配唯一标识,例如 `window.__bridgeID = Date.now;` 并将其写入 `window.name`;
**封装读写**:避免直接操作 `window.nam e` ,使用 `Bridge.set` 与 `Bridge.get` 包装,以便以后迁移到 postMessage 时只改内部实现;
**中转策略**:当出现真正跨域阻断时让目标页面先跳转到与你同源的一段 “桥接” HTML,再通过该桥接层把 `name` 内容取出来并重新注入回来;
**安全加固**:采用 AES‑256 或 RSA 加密后再存入 `name`,同时在每次读取前校验签名防止篡改;
**清理工作**:业务结束后及时将 `window.nam e=''` 防止内存泄漏或意外暴露。
六、 – 把古老武器放进工具箱,而不是当唯一依赖我们Yi经走完了从概念到实战,再到坑点与对比的一整套路径。Ru果你的项目正好卡在「旧版 IE」或者「一次性搬运大块数据」这类边缘需求上,不妨掏出这个沉睡Yi久的小宝贝,让它帮你解决燃眉之急。但请记住它终究是一枚过气“老古董”,不是长期主力军。
Zui后一下:window .name作为浏览器的一个老古董方案,简单了解介绍下Ru果需要通讯,还是推荐
在之前的文章里介绍了
关键点: iframe 的刷新只会重置它自己\<\/stro ng> 的 \\ w indow.nam e\<\/c ode\>\ 毫无影响。而且Ru果需要设置子页面的 name,必须是同源。
上面的例子中,我们用到的页面 a.html 和 b.html 是处于同一个域的,但是即使 a.html 与 b.html 处于不同域中,上述结论同样适用,这也正是利用<\/b \>\
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback