2023年7月28日发(作者:)
jsIframe与⽗级页⾯通信及IE9-兼容性⼀、 postMessage ssage()⽅法安全地启⽤Window对象之间的跨源通信;例如,在页⾯和它产⽣的弹出窗⼝之间,或者在页⾯和嵌⼊其中的iframe之间。
⼆、语法 ssage(message, targetOrigin, [transfer]); otherWindow:是接收对象的窗体引⽤,例如:⼦窗体(iframe)对⽗级窗体的引⽤ "" 或者其他Iframe的引⽤“ +索引值(命名或数字)” message:将要发送到其他 window的数据。在IE9以下的浏览器,message不⽀持JSON对象,必须是字符串类型 targetOrigin:通过窗⼝的origin属性来指定哪些窗⼝能接收到消息事件,其值可以是字符串"*"(表⽰⽆限制)或者⼀个URI。在发送消息的时候,如果⽬标窗⼝的协议、主机地址或端⼝这三者的任意⼀项不匹配targetOrigin提供的值,那么消息就不会被发送;只有三者完全匹配,消息才会被发送。 transfer:是⼀串和message 同时传递的
Transferable 对象. 这些对象的所有权将被转移给消息的接收⽅,⽽发送⼀⽅将不再保有所有权。三、应⽤⼦窗体和⽗窗体之间的通信1. :添加有Iframe() 页⾯,并监听message事件
parent
View Code2. :直接向parent 发送⼀条消息childIframe
View Code3. IE9-兼容问题: IE9及以下的浏览器,message不⽀持JSON对象,必须是字符串类型。发送时将JSON转换为字符串ssage(ify({ type: "open", url: "" }), "*"); IE9还是IE8 不兼容addEventListener和"message"监听⽅法和事件,兼容办法//IE8,IE9兼容⽅法if (Event) { Event('onmessage', function (message) { (()); });} else { ntListener('message', function (message) { (()); });}发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1690559023a368652.html
评论列表(0条)