iframe 中使用 window.name

来源:互联网 发布:w7怎么设置网络共享 编辑:程序博客网 时间:2024/05/29 06:34

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 0
原创粉丝点击