【发布时间】:2010-11-06 06:29:27
【问题描述】:
这是一个sample page 和几个日期选择器。这是 Drip 的结果:
alt text http://www.picvault.info/images/537090308_omoya.png
当我反复单击刷新按钮时,此页面在 IE6sp1 中无限期泄漏(IE6sp3+、Opera 9、Chrome2 和 FF3+ 似乎不错)。在我真正完全关闭浏览器之前,内存一直在上升并且永远不会下降。
我也尝试过使用最新的每晚 jquery (r6414) 和最新的稳定 UI (1.7.2),但没有任何区别。我尝试了各种没有成功的事情(CollectGarbage,AntiLeak,其他)。
我正在寻找“使用不同的浏览器!!1”以外的解决方案,因为我对此没有任何控制权。任何帮助将不胜感激!
更新 1: 我将该按钮事件添加到一个循环中,这就是发生的情况(突然下降是当我终止 IE 时):
更新 2:我提交了 bug report(手指交叉)。
更新 3: 这也在 mailing list 上。
更新 4:这(如邮件列表中所报告的)不起作用,实际上使事情变得更糟:
$(window).bind("unload", function() {
$('.hasDatepicker').datepicker('destroy');
$(window).unbind();
});
仅仅调用destroy是不够的。我仍然被这个困住了,并且非常接近将 jquery 从项目中剥离出来。我喜欢它(我真的喜欢它!)但是如果它坏了,我就无法使用它。
更新 5: 开始赏金,另外 550 分奖励给一位乐于助人的人!
更新 6: 更多测试表明此漏洞存在于 IE6 和 IE6sp1 中,但已在 IE6sp2+ 中修复。现在,关于我到目前为止的答案......
到目前为止,所有答案都是以下任何一种:
- 放弃 IE6sp0/sp1 用户或忽略 他们
- 调试 jquery 并自己解决问题
- 我无法重现该问题。
我知道乞丐不能选择,但那些根本不是我问题的答案。
我不能放弃我的用户。他们占用户群的 25%。这是一个为客户编写的自定义应用程序,旨在在 IE6 上运行。 放弃 IE6sp0/sp1 不是一种选择。 告诉我的客户只是处理它不是一种选择。它泄漏得如此之快,以至于五分钟后,一些较弱的机器无法使用。
此外,虽然我很想成为一名 JS 忍者,这样我就可以在 jquery 代码中寻找模糊的内存泄漏(当然这是 MS 的错,而不是 jquery 的错),但我也没有看到这种情况发生。
最后,多个人在此处和邮件列表中重现了该问题。如果你不能重现它,你可能有 IE6SP2+,或者你可能不够清爽。
显然,这个问题对我来说非常重要(因此有 6 次修订、赏金等),所以我对新想法持开放态度,但请记住,这三个建议都不适合我。
感谢大家的考虑和见解。请保持他们的到来!
更新 7: 赏金已结束,SO 自动接受了 Keith 的回答。很抱歉,只获得了一半的分数(因为我自己没有选择答案),但我仍然很困惑,所以我认为一半是公平的。
我希望 jquery/jquery-ui 团队可以解决这个问题,但我担心我将不得不将其写为“不可能(目前)”并停止使用部分或全部 jquery。感谢大家的帮助和考虑。如果有人对我的问题提出了真正的解决方案,请发帖,我会想办法奖励你。
【问题讨论】:
-
嘿,迈克,jquery 团队中没有人甚至懒得评论 google 组,这让我有点不高兴。我知道他们现在就在身边,因为他们评论了其他(更琐碎的)事情。我花了一些时间研究其他框架如何破坏元素。我开始越来越喜欢道场了!!
-
快速查看这个问题,它看起来像是IE6中的一个错误,而不是JQuery,微软在IE的更高版本中修复了这个错误。 JQuery 家伙可能厌倦了处理由网络浏览器的红头发继子 Internet Explorer 引起的问题。只是出于好奇,你为什么卡在 IE6 上?
-
@nemo:是的,这绝对是一个 IE6 错误——但由于我无法让所有用户都升级到 IE6sp3+,所以 jquery 必须改变。很多很多企业用户都没有选择 IT 推出的内容,就我而言,我有数百台旧机器使用旧的、不受支持的 IE 版本访问该站点。
-
真的不能让客户升级到最新的IE6版本吗?我发现很多为 IE6 编写的应用程序不能在 IE7/8 上运行,但它们应该在 IE6SP2 上运行。
-
如果我可以使用一些服务器端代码来解决 IE 的错误,那就不会那么痛苦了。如果这样的修复是不可能的,我想我唯一的选择是(1)避免像 jquery/jqui 或 使用的 JS (2)升级 3 大洲的数百台机器。有趣。
标签: javascript jquery jquery-ui memory-leaks internet-explorer-6