如何使用Javascript';s";“多执行上下文”;工作

如何使用Javascript';s";“多执行上下文”;工作,javascript,internet-explorer,firefox,safari,google-chrome,Javascript,Internet Explorer,Firefox,Safari,Google Chrome,Javascript没有可见的线程(但是——工作线程即将出现,请参阅中的更多信息) 然而,它似乎有多个同时存在的执行上下文——当您有多个Firefox窗口和多个Firefox/IE选项卡时,它们是独立的 当一个页面上有多个iframe时,每个iframe都有自己的执行上下文,但它们都有共享数据。如果两个iFrame位于同一个域上,它们可以访问彼此的DOM并调用彼此的函数。然而,我在谷歌上找不到对调度模型的描述,即是否: 并行/先发制人,在这种情况下--可以暂时挂起吗?任何形式的相互排斥 合作,

Javascript没有可见的线程(但是——工作线程即将出现,请参阅中的更多信息)

然而,它似乎有多个同时存在的执行上下文——当您有多个Firefox窗口和多个Firefox/IE选项卡时,它们是独立的

当一个页面上有多个iframe时,每个iframe都有自己的执行上下文,但它们都有共享数据。如果两个iFrame位于同一个域上,它们可以访问彼此的DOM并调用彼此的函数。然而,我在谷歌上找不到对调度模型的描述,即是否:

  • 并行/先发制人,在这种情况下--可以暂时挂起吗?任何形式的相互排斥
  • 合作,在这种情况下——一个如何屈服于另一个环境
  • 非重叠——即,在调用iframe中的事件处理程序之前,主框架中的事件处理程序必须返回(反之亦然)
因此,问题是:

  • 有保证的上下文切换模型吗
  • 如果不是,那么流行的上下文切换模型是什么?
    • Firefox和IE似乎在相同的选项卡上下文之间有一个不重叠的时间表,并且在同一个过程中在不同的选项卡/窗口之间进行协作——但我不确定
    • Chrome在不同的选项卡上使用系统调度程序(可能使用多个内核,在并行/抢占组中,但我不知道它在同一选项卡中的多个帧上使用了什么)
    • 我对狩猎和歌剧一无所知

谢谢!

在Firefox中,网页中的所有JavaScript都在主线程上运行,因此都是序列化的。每个框架都有自己的框架,每个方法都执行到完成。没有抢占

(你知道,但为了完整性:这是Firefox 3.5。随着浏览器成为多进程浏览器,正如Chrome已经是,Firefox将在以后的几个版本中,不相关的选项卡可能会独立运行,而(至少现在)对于“相关”选项卡,浏览器开发人员试图保留“运行到完成”的语义。)当然,但Firefox还没有做到这一点,至少在Firefox 4.0;)之前不会。单独的选项卡在单独的进程上,没有问题。一个选项卡中的iFrame/Frame仍然共享同一个线程。Js开发人员仍然可以轻松呼吸,不必担心并发性。