Javascript IE6/7/8内存不足?
今天我正在对某些功能进行跨浏览器测试,结果遇到了一个相当漂亮的小gem 在IE8中:Javascript IE6/7/8内存不足?,javascript,jquery,internet-explorer,memory,iframe,Javascript,Jquery,Internet Explorer,Memory,Iframe,今天我正在对某些功能进行跨浏览器测试,结果遇到了一个相当漂亮的小gem 在IE8中:第99行内存不足 在IE7中:第100行内存不足 在IE6中:第101行的堆栈溢出 据我所知,这些消息开始出现的大部分时间都是由于数组中的元素数大于65535。然而,我不认为这是目前的问题 所讨论的功能是来自iframe的操作,使用jQuery“关闭”当前iframe并“打开”另一个。它实际上发生在封闭/开放的交互上 以前有人见过这样的东西吗 编辑:进一步调查后,它实际上似乎与iFrame无关。仍在挖掘,但任何建
第99行内存不足
在IE7中:第100行内存不足
在IE6中:第101行的堆栈溢出
据我所知,这些消息开始出现的大部分时间都是由于数组中的元素数大于65535
。然而,我不认为这是目前的问题
所讨论的功能是来自iframe
的操作,使用jQuery“关闭”当前iframe
并“打开”另一个。它实际上发生在封闭/开放的交互上
以前有人见过这样的东西吗
编辑:进一步调查后,它实际上似乎与iFrame无关。仍在挖掘,但任何建议都将不胜感激。似乎有些东西占用了太多内存,IE没有为此类东西分配太多内存:)其他浏览器会这样做。如果您查看您拥有的行号或使用IE8开发工具调试代码,您应该会得到答案
如果它不是一个递归,那么它可能是一个不断消耗更多内存直到耗尽的循环。因此,IE和其他所有东西都会像往常一样以不同的方式处理问题
我有一个用来抛出错误的函数,它是递归的。我希望错误显示在主文档中,而不是iframe(不幸的是,iframe在这个站点上被广泛使用)。我的职能要点如下:
myClass.myErrorFunc = function ( msg ) {
if ( parent !== window ) {
parent.myClass.myErrorFunc( msg );
} else {
// display the error
}
}
这在Chrome和Firefox中非常有效。它递归一个级别,并在主窗口中显示错误,因为一旦到达顶层,父级就是它自己。然而,显然在IE中,window的父对象从来都不是它自己。因此,无限递归
请继续关注解决方案
编辑:显然,这是使用的问题==代码>而不是=代码>。当我切换到时=代码>,第二次通过(因为这是从iframe
运行的),window==parent
计算为true,但window==parent
不
不管怎样,我就要它
谢谢大家的帮助。您还测试了哪些浏览器,添加了多少元素?在Linux Chrome和FF3.6以及Windows FF3.6中都可以正常工作。堆栈溢出通常是由于无限递归造成的。你确定你的代码里没有这些吗?那也是我的第一个想法…但我似乎什么也找不到。我还在挖。