最近搞一个需求有关js跨域弹窗传值,问题是这样的:有两个网站分别为www.b.com、www.a.com 在B网站B.htm嵌入A网站的A.htm页面,在A.htm页面要从弹出的AA.htm页面获取一个值(产生跨域问题,AA.htm页面要弹出到B网站)。解决方法是创建一个不可见ifr a me,他的src为对方网站一个页面(BB.htm),在这个页面做弹出AA.htm页面),传值也依法泡制。代码如下
在web开发中,经常会用到ifr a me,难免会碰到需要在父窗口中使用ifr a me中的元素、或者在ifr a me框架中使用父窗口的元素
js
在父窗口中获取ifr a me中的元素
1、
格式:window.frames[“ifr a me的name值”].document.getElementById(“ifr a me中控件的ID”).click();
实例:window.frames[“ifm”].document.getElementById(“btnOk”).click();
实现原理
js的原生方法被覆盖掉以后,如果你还没让原生方法又从新指向一个新的变量名,那就gg了。所以,关键就是怎么再获取到原生的方法。实现的原理呢就是创建一个新的window对象,然后从新的window对象里面获取原生的方法,来重新赋值。
使用ifr a me实现
首先创建一个ifr a me对象,使用document.createElement方法创建
var ifr a me = document.createElement("ifr a me");
document.body.appen
在web开发中,经常会用到ifr a me,难免会碰到需要在父窗口中使用ifr a me中的元素、或者在ifr a me框架中使用父窗口的元素
js
在父窗口中获取ifr a me中的元素
1、
格式:window.frames[“ifr a me的name值”].document.getElementByIdx_x(“ifr a me中控件的ID”).click();
实例:window.frames[“ifm”].document.getElementByIdx_x(“btnOk”).cl
1.在ifr a me子页面中获取父页面的元素:
a>window.parent.document这个是获取父页面document中的对象;
b>如果要获取父页面js中的方法:window.parent.xxxx();xxxx()为方法;
2.在父页面中获取ifr a me子页面中的元素:
a>
var child = document.getElementByIdx_x(“mainFrame”).contentWindow;//mainFram