# 七.name

window.name 属性的独特之处:name 值在不同的页面(甚至不同域名)加载后依旧存在,并且可以支持非常长的 name 值(2m)

  • a 页面 http://localhost:3000/a.html 访问 c 页面 http://localhost:4000/#/c.html的数据,需要一个代理页面 bhttp://localhost:3000/b.html,当 a 页面加载时将 c 页面动态替换为 b 页面,由于 name 没有消失可以拿到 name 值
  • 1.a 页面 http://localhost:3000/a.html
<iframe
  src="http://localhost:4000/c.html"
  id="frame"
  frameborder=" 0"
  onload="load()"
  style="border:1px solid red"
></iframe>
1
2
3
4
5
6
7
let onoff = true
function load() {
  let iframe = document.getElementById("frame")
  if (onoff) {
    iframe.src = "http://localhost:3000/b.html"
    onoff = false
  } else {
    alert(iframe.contentWindow.name)
  }
}
1
2
3
4
5
6
7
8
9
10
  • b 页面 http://localhost:3000/b.html
//
1
  • c 页面 http://localhost:4000/#/c.html
window.name = "来自c页面的数据"
1