2010-06-07 106 views
3

我的问题有点类似于this one.我们想知道是否有一种方法可以确定是否所有JavaScript都已完成(所以没有javascript正在运行)。我们有很多东西在页面的onload事件后超时运行,所以即使在页面加载后,也可能会发生几秒钟的事情。出于一大堆理由,主要涉及管理的要求,我们需要知道所有这些脚本何时完成运行。有一个任意的数量,所以一个通用的解决方案会很棒。确定javascript是否已完成

回答

2

我能想到的最快和最容易的是创建一系列布尔值,告诉您哪些进程已完成。方法结束后,让它将其中一个变量设置为true。当他们都是真实的,你知道它已经完成加载。

+2

这就是我的想法。为了实现这个目标,所有这些页面上的所有功能都会变得烦人,但是噢。 C'Est la vie d'un programmeur! – Anthony 2010-06-07 00:20:00

+0

@塞尔吉奥的解决方案非常简单,它可以让您避免更改所有功能。基本上,任何时候你想要执行一个高优先级的函数,都可以通过一个特殊的包装函数来运行它(他称之为executeWithNotify(),但你可以任意调用它,该函数将一个公共变量设置为'isRunning = true',当它开始时为'isRunning = false',所有你需要做的就是通过这个来运行你的高优先级脚本,并改变你的低优先级脚本来检查'isRunning'。 – Andrew 2010-06-07 00:44:46

+1

Sergio函数的问题我喜欢它)是假定wrapper函数知道另一个进程何时结束,它假定进程在另一个方法返回时是同步的,如果你的包装方法调用setTimeout等,并导致执行发生包装函数将会返回错误结束的过程 – kemiller2002 2010-06-07 01:11:19

0

也许这些脚本在完成后会调用imDone()函数。

2

您可以创建一个excuteWithNotify(functionToEexcute)函数。它将接收函数作为参数执行,执行它,然后它将适当地设置标志。

+0

非常有趣的解决方案。并且很容易执行。 – Andrew 2010-06-07 00:37:43

1

我会把所有的JS文件放到一个文件中。然后在末尾使用布尔方法。

相关问题