如何发现 IE6 中 Javascript 变慢的情况

spr*_*man 5 javascript debugging internet-explorer-6

有些东西使我在 IE6 中的 Javascript 代码变慢,导致悬停时出现明显的延迟。在 FF 中还好,所以使用 firebug 没什么帮助。有哪些工具可以帮助在 IE 中调试此问题?

更多信息:我认为实际上没有任何 JS 在我将鼠标悬停的对象上运行。(至少我没有放入任何内容。)只是 css :hover 的东西。另外,我在项目上运行了 jquery 和 dojo,所以谁知道它们在后台做什么。

som*_*ome 5

只是提示一下那个“东西”可能是什么......

\n\n

IE 中的字符串连接(或者至少在我测试时)非常慢。Opera 在 0.2 秒后完成,Firefox 在 4.1 秒后完成,Internet Explorer 7 在 20分钟后仍然没有\xe2\x80\x99t 完成!

\n\n

不要这样做:

\n\n
for (var i=0, i < 200; i++) { s = s + "something";}\n
Run Code Online (Sandbox Code Playgroud)\n\n

相反,暂时使用一个数组,然后加入它:

\n\n
var s=[];\nfor (var i=0; i < 200; i++) s.push("something");\ns=s.join("");\n
Run Code Online (Sandbox Code Playgroud)\n


Rak*_*Pai 5

我通常做的事情是:

var startTime = new Date();
// Lots of heavy code here
console.log("Processing time: ", new Date() - startTime, " ms");
Run Code Online (Sandbox Code Playgroud)

您可以使用Firebug lite来让 console.log 跨浏览器工作。这使您可以了解代码的任何给定部分的执行时间。

一旦知道哪个部分是错误的,您就可以探索修复它的选项。


spr*_*man 0

我想我已经为任何好奇的人找到了速度减慢的根源:我正在使用bgiframe来解决 IE6 选择框 z-index 问题(在 SO的其他地方讨论过)。