HTML5 postMessage 跨域交换数据
某厂面试归来,发现自己落伍了!>>> 今天我们来学习一下HTML5的api,利用postMessage来跨域交换数据。和前面一些方式交换数据方式不同的是,利用postMessage 不能和服务端交换数据 , 只能在两个窗口(iframe)之间交换数据 ,废话不多说,我们直接进入实战。 实战postMessage overview 上文中说,postMessage是用于两个窗口(iframe)之间交换数据的,如果我们同时打开着百度和谷歌两个页面,是不是说这两者之间就可以通信了?No,no,no,事实并非如此,就算百度和谷歌俩页面有通信的意愿也不行。 两个窗口能通信的前提是,一个窗口以iframe的形式存在于另一个窗口,或者一个窗口是从另一个窗口通过window.open()或者超链接的形式打开的(同样可以用window.opener获取源窗口) ;换句话说,你要交换数据,必须能获取目标窗口(target window)的引用,不然两个窗口之间毫无联系,想通信也无能为力。 既然是H5家族的,我们也得观望下它被广大浏览器的接受程度,可以看到接受程度还是相当高的: 而postMessage的使用方式也相当简单: otherWindow.postMessage(message, targetOrigin, [transfer]); otherWindow是对接收方窗口的引用