使用chrome开发人员工具时,似乎每个应用程序窗口(以及背景"页面")都有自己的javascript上下文(对象空间,执行线程),但chrome.app.window.create的createdWindow回调显然提供了直接访问刚刚创建的"其他"窗口的对象.
鉴于此,我不清楚窗口之间的最佳通信方式; 例如,如果我打开第二个窗口作为对话框,当用户单击"确定"保存更改时,我应该使用postMessage,sendMessage还是只调用主窗口中对象的函数.我查看了消息传递示例,他们似乎专注于两个不同应用程序之间或应用程序和扩展程序之间的通信.
所以,我正在寻求一个应用程序内的内存和执行模型的清晰描述.是否有单独的上下文,或者它只是一个对象空间,有一个执行线程?在同一个Chrome应用程序的窗口之间进行通信的最佳方式是什么?
这是一个很好的问题詹姆斯!
多个镀铬窗口并不是完全独立的。它们共享一个线程和对象空间,但是每个窗口对象是不同的。在 javascript 中,在当前窗口上查找对事物的无作用域引用,因此这使窗口看起来是不同的对象空间 - 但实际上并非如此。
因此,您可以进入另一个窗口并在那里执行一个函数,或者以其他方式操作状态(例如,将另一个窗口上的变量设置为当前窗口中的一个函数),这是可以接受和支持的。
| 归档时间: |
|
| 查看次数: |
2134 次 |
| 最近记录: |