德瑪西亞99
2019-03-12 18:13:27
利用postmessage跨域向子頁(yè)面?zhèn)鞲疙?yè)面的window對(duì)象代碼:1.父頁(yè)面 window_parent = this.window; var ifr = document.getElementsByClassName('video_iframe'); ifr.contentWindow.postMessage(window_parent,target);2.iframe頁(yè)面window.addEventListener('message',function(event){ if(event.origin == 'https://xxx.com'){ this.window = event.data; }},false);報(bào)錯(cuò):postMessage這個(gè)api,MDN上說(shuō)的是可以傳對(duì)象的,卻報(bào)這樣的錯(cuò)
5 回答

精慕HU
TA貢獻(xiàn)1845條經(jīng)驗(yàn) 獲得超8個(gè)贊
第一,window對(duì)象是不能被覆蓋的
第二, 對(duì)象肯定傳不過(guò)去的,更何況window對(duì)象

嗶嗶one
TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個(gè)贊
序列化一個(gè)對(duì)象,你可以用JSON.stringfy(obj),但是這里有一個(gè)問(wèn)題,window對(duì)象結(jié)構(gòu)復(fù)雜,你將會(huì)面臨circular reference,所以,有個(gè)折中方案,就是你需要window的屬性,將這些屬性提取出來(lái),拼裝成一個(gè)新對(duì)象即可。
參考代碼如下:
var data = JSON.stringify({
'location': window.location
// etc
});

繁星coding
TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超4個(gè)贊
window對(duì)象不能傳遞的,況且還跨域,安全問(wèn)題很多啊
其實(shí),你應(yīng)該理一下你切實(shí)的需求,找找有沒(méi)有其他的解決方案
添加回答
舉報(bào)
0/150
提交
取消