基本概念
iframe参数传递在 URL 中传值有两⽅式,⼀种是通过 search 来传值(即 ? 后⾯的部分),⼀种是通过 hash 来传值(即 # 后⾯的部分)。它们之间有⼀个区别,
即 search 改变时浏览器会发⼀次的 http request,⽽ hash 改变时浏览器不会发送 http request。也就是说,search 可以⽤来做浏览器和服务器端的信息传递,⽽ hash 则更适合⽤于本地页⾯的信息传递(⽐如在主页⾯和“跨域” iframe 之间做信息传递,主页⾯通过改变 iframe.src 中的 hash 部分来“发送数据”,
⽽ iframe 则通过读取 window.location.hash 来“接收数据”。相反的,iframe 通过改变 window.location.hash 来“发送数据”,主页⾯则通过读
取 iframe.src 来“接收数据”)。了解了如何收发数据,那么收发数据的时间点怎么匹配呢?就是说接收⽅如何知道发送⽅发送了数据呢?
监听⽅法
最常⽤的⽅案是,数据接收⽅采⽤ setInterval 来定时检查,已达到监听的⽬的。当然,这种⽅式的弊端在
于:如果时间间隔设置太长则不够即时,时间太短则⼜牺牲页⾯性能。除了这个⽅案之外还有两种较常见的,⼀种是先改变 iframe 的 src 然后紧接着改变 iframe 的尺⼨以触发 iframe 中的 size事件(iframe 只要监听 size 就可以了,这种⽅法的优势在于兼容所有浏览器,但缺点在于实现稍⿇烦些且只能⽤于由 iframe 外向 iframe 内的单向传递,详细⽅法见),另⼀种则是“最⼤可能的使⽤”hashchange 事件来监听 hash 的改变(所谓“最⼤可能的使⽤“,是因为该事件并⾮所有版本浏览器都⽀持)。此外,hashchange 事件还有⼀个局限性,就是它只能⽤于在 iframe 内部 hash 的监听,对于主页⾯⽽⾔,仍然只能采⽤定时检查的⽅式(这⼀点和上⼀种⽅法相同)。
兼容性
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论