0 0

js控制iframe弹出窗口10

有这样一种情况:
我在iframe里面嵌了一个网页(这个网页可能是来自网络)
如果网页里面含有像
<script>
function changelocation(){
parent.location.href="b.htm";
}
</script>
</head>

<body>
  <a href="#" onclick="changelocation();">跳转</a>
</body>
这样的代码,那页面跳转之后就会覆盖掉了原来的iframe页,我想让这个跳转之后的
页面在iframe里面显示。但是只能是自己另外建一个js文件往这个网页上注入,
因为这个网页不一定是我写的,可能会是一个网络资源。
求解决办法。附件是需求用的一个例子

问题补充:
小哀好困 写道
亲,很好玩的问题

想到两种思路,分享一下,同时也很想知道你现在的解决办法

第一种:


在父窗口(当子窗口加载完成)直接把 子窗口的parent对象赋给自己

e.g iframe.contentWindow.parent=iframe.contentWindow

在ff下测试成功,但后来发现parent在ie下是只读属性

所以。。。



另外一种,比较变态了


假设a是父页面,c是目标页(iframe) 

假如我们加一层iframe b 变成 a->b->c 

当c调用parent的时候,b地址变了,在a看来,还是同一frame

这是,需要有个监听器,监听b的地址,假如它的地址和我们初始化给他的不同,被c改变

那么,删除b,在创建个空b,再用b现在的地址创建c

就是说,始终保持,c(目标页)和父页的关系式 a->b->c


亲:
第一种跟我最开始的做法一样,但是后来发现这种情况只能是本地文件会有效,注入到别的资源上就不起作用了。
第二种我也想了,但是不会做。
还有一个是我在这个来源于网络的网页上用注入的方式让他的<script>标签引入我的js,用firebug看的话,已经写入进去,但是运行起来就不会执行。
2012年4月12日 22:54
  • js.rar (988 Bytes)
  • 下载次数: 24

2个答案 按时间排序 按投票排序

0 0

采纳的答案

关于方法一,

亲,你所谓的其他资源肯定是跨域访问,而且连基域应该都是不同的

解决办法是,你可以在java端生成一个代理

就是通过java发送httprequest去把页面拿来,在返回给iframe

这样你就可以操作该iframe的对象了

但似乎还是没法解决ie问题


同理,方法也必须使用这种代理方式假如跨域访问情况存在,因为你要访问iframe的window.location 属性

2012年4月15日 01:11
0 0

亲,很好玩的问题

想到两种思路,分享一下,同时也很想知道你现在的解决办法

第一种:


在父窗口(当子窗口加载完成)直接把 子窗口的parent对象赋给自己

e.g iframe.contentWindow.parent=iframe.contentWindow

在ff下测试成功,但后来发现parent在ie下是只读属性

所以。。。



另外一种,比较变态了


假设a是父页面,c是目标页(iframe) 

假如我们加一层iframe b 变成 a->b->c 

当c调用parent的时候,b地址变了,在a看来,还是同一frame

这是,需要有个监听器,监听b的地址,假如它的地址和我们初始化给他的不同,被c改变

那么,删除b,在创建个空b,再用b现在的地址创建c

就是说,始终保持,c(目标页)和父页的关系式 a->b->c

2012年4月13日 12:33

相关推荐

Global site tag (gtag.js) - Google Analytics