IE11在清空大型<选择>由于页面上有单独的文本区域,因此列出

IE11 hangs when emptying large <select> list due to seperate textarea on page

本文关键字:区域 文本 单独 于页面 大型 清空 lt 选择 IE11 gt      更新时间:2023-09-26

我一直在调查一个问题,当我试图清空一个包含大量或多个选项(约30000)的控件的div时。我知道,这很荒谬,但我对这个数字无能为力。我已经将其缩小到某种程度上与在同一页面上的文本区域控件中输入信息有关。

这个问题似乎刚刚在IE11的最新更新中得到了体现。之前的更新版本11.0.20没有做到这一点,但11.0.25做到了,不确定是特定的更新还是介于两者之间。

请参阅以下精简示例:http://jsfiddle.net/jelston/epmpb2j4/4/

如果单击"创建"、"填充"answers"清空",您应该会看到它发生得相当快。但是,如果单击"创建"、"填充",然后在文本区域中输入任何文本,然后单击"清空",它将挂起一段时间。我看到的通常是15秒左右,但我相信这可能因电脑而异。在这一点上,即使你清除文本,直到刷新页面,它每次都会挂起。

如果你查看javascript,你会发现它甚至不在被清空的div中,也没有任何东西试图以任何方式访问文本区域。

在这一点上,我认为这只是一个IE错误,但我不想抛出格式糟糕的HTML或javascript,我只是看不出有什么错误。我尝试了几种不同的方法来清除它,但它们的行为似乎都一样:

.html("")
.detach().remove()
document.getElementById("id").innerHTML = "";

非常感谢任何花时间研究并提出任何建议的人。这是我在SO上发布的第一个问题,所以让我知道我是否可以做得更好。

看起来这是一个与IE中内置拼写检查器有关的内存泄漏。Microsoft的指示是安装修补程序(MS15-106),它确实为我纠正了这个问题。