一共4个页面:
frame.jsp  test2.jsp  iframe.jspframe.jsp *****************************************<html>
<frameset frameborder=1 name="fst" cols="20%,80%" border=1>
<frame name="test2" src="test2.jsp"></frame>
</frameset>
</html>test2.jsp **************************************************<html>
<iframe name="iframe1" src="http://127.0.0.1:8081/iframe/iframe.jsp"></iframe>
<form name="form1">
<input type="text" name=text1 size=20>
</form>
<html>iframe.jsp ********************************<html>
iframe子页面
<input type=button value="改变父窗口的控件值" onclick="window.parent.document.form1.text1='123456789'">
</html>************************************************
把上面的三个文件放到tomcat的test目录下,
在浏览器中输入http://localhost:8080/test/frame.jsp
点击"改变父窗口的控件值"这个按钮,onclick事件不能执行
但是如果在浏览器中输入http://127.0.0.1:8080/test/frame.jsp
点击"改变父窗口的控件值"这个按钮,onclick事件就可以执行我发现在浏览器中输入的服务器的地址一定要和test2.jsp中iframe标签包含的
页面的地址形式一样才可以,不知道为什么
不要问我为什么不统一成一种形式(127.0.0.1或localhost),因为这是业务需要
我现在想实现的功能就是在iframe页面中改变父页面中的文本框的值 请诸位讨论如何解决

解决方案 »

  1.   

    用request取协议、地址、端口信息进行拼接访问的服务器地址
      

  2.   

    request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()
      

  3.   

    这说明localhost和127.0.0.1不是一会事
    至于具体的我也不知道,不过这个问题我也发现过。
    不过LZ为什么不用相对地址呢?这应该和业务没什么关系吧?
      

  4.   

    这个与JS的安全机制有关,JS不能跨站点控制也就是说,163网页的JS脚本是不能控制SOHU网页内的控件的。而区分不同站点的方法就是检查他的URL:localhost和127.0.0.1就认为不是一个站点
      

  5.   

    以前在那里看到过,
    localhost和127.0.0.1是有很细微的区别的,
    但是现在又找不到了,
    关注一下!
      

  6.   

    你在test2.jsp中的:
    src="http://127.0.0.1:8081/iframe/iframe.jsp"
    改成相对路径应该就好了吧