0

我有一个带有 OpenLayers 的网站,其中地图在 IE8 中不起作用(它在 IE9、Firefox、Opera、Chrome、Safari 中起作用)。

但是,当我在 IE8 中运行调试器工具并一直按 F5 直到完成时,网站突然运行良好。它发现的问题仅在 OpenLayers.js 中,而不在我的脚本中。

现在,我对 Web 开发真的很陌生——但我一直认为调试器不会更改代码中的任何内容,除非我手动更改,如果确实如此,我会实际看到它在做什么。但是IE8只是指出了问题,然后网站就可以工作了。

这是网站的链接:

http://xweb.geos.ed.ac.uk/~s1148194/eq/map.html

有人可以用简单的话向我解释一下吗?

谢谢,如果这个问题相当愚蠢,我们深表歉意。

4

2 回答 2

0

如果您指定它不起作用的方式会有所帮助,但我的猜测是调试器的暂停时间足够长,可以赶上某些东西,否则 IE8 之前无法及时加载或运行这是需要的。

于 2012-07-15T20:23:06.077 回答
0

这几乎可以肯定是一种竞争条件。如果您有 AJAX 调用,即使脚本暂停,它们后面的 HTTP 请求也会继续运行,因此它们有机会在您按 F5 继续之前完成。如果不进行调试,脚本会继续运行,并且可能会在 AJAX 结果到达之前尝试访问它。

要解决此问题,请确保等待 AJAX 结果到达,然后再尝试使用其中包含的任何内容。或者(不推荐,但可能)您可以使您的 AJAX 请求同步。这消除了竞争条件的任何可能性。

于 2012-07-15T20:26:19.270 回答