我从另一个域名启动一个URL,然后对其进行postMessage。
在我启动的子窗口中,JavaScript代码通过以下方式注册其兴趣:
问题在于有时候在子窗口运行很多代码之前,它并不能接收到发来的消息。
如何可靠地知道跨域子窗口已准备好接收消息?我试过用child.onload注册,但由于是跨域,它并不会触发。是否还有其他方法,例如传递参数给window.open,以保证消息的传递?
可能相关的其他信息:
- 我正在使用Chrome 62版本。 - 我最终得到了一个跨域窗口的真正原因是我想确保在子窗口中获得一个新的渲染线程,因为渲染非常耗费资源。如果我让它与父窗口相同的来源,则Chrome似乎会重用渲染进程,从而使用相同的线程。
const child = window.open("http://urlfromanotherdomain.com");
child.postMessage("you cant handle the message", "*");
在我启动的子窗口中,JavaScript代码通过以下方式注册其兴趣:
window.onmessage = function(ev) {window.console.log(ev);}
问题在于有时候在子窗口运行很多代码之前,它并不能接收到发来的消息。
如何可靠地知道跨域子窗口已准备好接收消息?我试过用child.onload注册,但由于是跨域,它并不会触发。是否还有其他方法,例如传递参数给window.open,以保证消息的传递?
可能相关的其他信息:
- 我正在使用Chrome 62版本。 - 我最终得到了一个跨域窗口的真正原因是我想确保在子窗口中获得一个新的渲染线程,因为渲染非常耗费资源。如果我让它与父窗口相同的来源,则Chrome似乎会重用渲染进程,从而使用相同的线程。