Недавно я должен периодически выполнять скрипт, полученный через Ajax с веб-сервера. Я делаю это, сначала создавая тэг Script и назначая текстовый атрибут для запуска скрипта. Затем я распоряжаюсь тег сценария просто чтобы узнать, что память продолжает расти на каждое создание в IE 7. Следующий HTML иллюстрирует проблему:IE утечки памяти для динамически сгенерированного javascript
<html>
<body>
<span id='m_garbageBin'></span>
<script type="text/javascript">
function buttonClicked()
{
for (var i = 0; i < 100000; i++)
{
var sc = document.createElement("script");
sc.text = "var x=1;";
document.body.appendChild(sc);
m_garbageBin.appendChild(sc);
m_garbageBin.innerHTML = '';
}
}
</script>
<script id='m_dynamicScript' type="text/javascript">
</script>
<input type='button' value='Click me!' onclick='buttonClicked();'/>
</body>
Скрипт ничего не делает вообще и все еще память продолжает увеличиваться при каждом нажатии на кнопку в IE, но не в Firefox (используя .innerHTML вместо .text). Тот факт, что я должен периодически выполнять сценарий для выполнения, не может быть изменен. Кто-нибудь знает, что я могу сделать, чтобы избежать увеличения памяти в IE?
это не "Аякса" –
Где 'm_garbageBin' определено? Кроме того, конечно, использование памяти увеличивается, вы создаете 100000 элементов каждый раз при запуске функции. –
@ Luke: приведенное выше является иллюстрацией проблемы, а не оригинальным сценарием Конрада (по-видимому, часть AJAX отлично работает). – outis