iframe 中使用 window.name

iframe 中使用 window.name

一、问题

最近,使用iframe时遇到一个很奇怪的问题:a.jsp内嵌一个iframe页b.jsp,而b.jsp页面在js中定义了一个var name;没有进行赋值前,就有了初始值,找不到初始化的地方。

二、查资料

发现,a页面通过iframe方式嵌入b页面时,b页面可以通过window.name的方式获取b页面对应的iframe的name的值。

即a页面中 <iframe name="ggg" src="b.jsp"/> 则b中 window.name = "ggg"

1. 示例代码1
a.jsp
<h3>aaa</h3>
<iframe id="iframeId" name="test_name" src="<%=request.getContextPath()%>/jsp/001/b.jsp">
    <p>Your browser does not support iframes.</p>
</iframe>
b.jsp
<body>
 <h3>bbb</h3>
</body>
<script type="text/javascript">
var a = window.name;
var b = name;
//var name;
var c = name;

alert(a+"\r"+b+"\r"+c);
</script>
2. 运行结果:

chrome(47)

ie (ie8)

3.示例代码2:

b.jsp中的注释var name去掉,即

<script type="text/javascript">

var a = window.name;
var b = name;
var name; //**这里重新定义**
var c = name;

alert(a+"\r"+b+"\r"+c);

</script>
4. 此时结果为:

chrome(47)

ie (ie8)

三、总结

  1. 使用iframe方式内嵌子页面,子页面可以通过 window.name 的方式获取iframename的值; 前提:在子页面没有重新定义name时,ie和chrome下都可以直接用name进行获取。
  2. 但是,一旦在子页面定义了name变量
    • ie中,会导致name重新定义,初始化为undefined
    • chrome中,会导致name被赋值为window.name,即出现莫名其妙被初始化了。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值