javascript_note

//iframe跨域通信 from 漂流瓶 ********************
ie6、7在处理window.open的时候,为了方便窗口通信,有一个opener对象,而这个对象的一个最大问题就是,父页面可以修改这个对象,可以给他指定为任何对象、方法或者数值
假如,有两个页面A,B
A中嵌了B,A是父页面,B是子页面,AB不同域
在A中,先设定window.frames['XXX'].opener = XX;
然后在B中就可以访问这个:window.opener
这个opener对象在内存中是同一份,剩下的事就随便了

测试:这个类要实现3个方法
1 send方法,发送信息,父页面和子页面都调用这个接口发送消息
2 addListener方法,用来接收消息,消息是广播的
3 removeListener方法,移除监听
在opener下挂这三个方法,然后需要通信的函数,把自己通过addListener添加到监听队列里
要发送消息的时候,就调用opener的send方法,这个方法接收一个object参数,里面携带了发信者的id、接收者的id、消息主体等,就像是事件的type属性、target属性等然后,所有注册在addListener的函数可以根据自己注册的时候的需求获取有用的信息,从而实现通信

//*仅用 []()+! 就足以实现几乎任意Javascript代码    ********************

from     http://www.cnblogs.com/pandora/archive/2010/02/27/1674833.html

参考 http://www.cnblogs.com/pandora/archive/2010/02/28/1675071.html

! = false

[] = 数组

+ = 连接符

() = 对象分隔符

其中 []["sort"]["call"]() 等于 [].sort.call() ,等价于 window,所以上面 []["sort"]["call"]()["eval"] 就等价于 window.eval

测试:ie报错。ff/op成功执行

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值