Я перезагружаю страницу каждые несколько секунд для получения обновления от сервера, эта страница может быть открыта, и это может произойти навсегда - я предполагаю, espcially так как этот браузер находится на удаленном сервере, который не выключен.
Я делаю это:
setTimeout(function () {
location.href = location.href; // forces a reload from the server
}, 1000*10*0.5);
Я заметил, что использование памяти IE6 продолжает увеличиваться и увеличиваться. Страница ничего не делает кроме обновления и отображает HTML.
Почему это происходит? Как может я по прибывшему эта проблема? Я не хочу разрушать IE6.
В 435,000K и это были приблизительно 30 минут.
Спасибо все
Извините все - у меня действительно есть другая функция, которая работает каждый раз, когда страница загружается:
function recreateTicks(tasks){
if(tasks!=''){
var myTicks = tasks.split(',');
var length = myTicks.length;
for(var i=0; i<length; i++){
var element = myTicks[i];
$('#'+element).attr('checked', true);
}
}
}
Что-то не так с вышеупомянутым? Циклическая ссылка??
Вышеупомянутая функция вызвана как это:
<script type="text/javascript">
<!--PHP Generated-->
var tasks = 'ab_1, ab_2, ab_3';
</script>
<script type="text/javascript">
$(document).ready(function(){
recreateTicks(tasks);
});
</script>
Хорошо, это немного спорно, но почему бы просто не позволить IE6 рухнуть?
В итоге вы можете потратить большую часть своего времени разработки на проблемы IE6 - быстро сокращающийся рынок в лучшем случае. Пока он мрачно держится в корпоративном пространстве, оставшиеся пользователи в любом случае ужасно заперты с большим количеством плохого программного обеспечения. У этих пользователей IE6 все чаще будет складываться впечатление, что их ПК настроен некачественно (а так оно и есть).
Почему бы просто не позволить этим пользователям IE6 потерпеть крах? Они просто увидят, что их ПК становится все медленнее и медленнее, а сообщение об ошибке (когда оно появится) будет сообщением IE, а не страничным.
В подходе к качеству, на 100% ориентированном на клиента, есть много ценного, и опасно позволять таким пользователям самим решать свои проблемы, но для вас важен баланс между затратами на разработку и вознаграждением.
Если только эти пользователи IE6 (чей браузер все равно постоянно падает) не заметят, что проблема в вашем приложении, и не смогут заблокировать его продажу, тогда какая вам польза от удвоения затрат на разработку?
Наконец, если вы действительно хотите, чтобы IE6 не протекал, не используйте jQuery. Напишите весь ваш Javascript с нуля и следите за масштабированием и различными ошибками IE6 DOM как ястреб. jQuery использует расширенные атрибуты (которые всегда утекают в IE6) и скрывает некоторые проблемы масштабирования, которые вам действительно нужно контролировать, если вы хотите, чтобы IE6 не утекал.
Вы уверены, что страница ничего не делает? У вас нет (например) нескольких обработчиков событий, которые вы прикрепили к элементам? IE известен утечкой памяти, если вы явно не разрываете соединение между элементом и его обработчиком во время события unload
. (Это не универсально, обработчик должен иметь ссылку на что-то, но сделать это тривиально легко - например, с помощью замыкания.) Крокфорд написал некоторую информацию об утечках памяти IE, которые могут быть вам полезным.
IE6 ужасно работает с памятью. В IE7 были сделаны некоторые улучшения, и еще больше в IE8.
Как говорит TJ, причиной этого могут быть круговые ссылки (элемент страницы ссылается на объект javascript, который ссылается обратно на этот элемент).
Вы можете прочитать больше о том, как уменьшить утечки в IE, прочитав ЭТУ СТРАНИЦУ. Вам также следует ознакомиться с The JavaScript Memory Leak Detector (написан командой Global Products в Microsoft). Он поможет вам найти утечки, если таковые имеются.
Вы уверены, что у вас установлена последняя исправленная версия IE6? Я столкнулся с той же проблемой в корпоративной локальной сети и в конце концов понял, что на настольных компьютерах не было исправлений, чтобы сохранить совместимость с устаревшим программным обеспечением. Обновление до последней версии IE6 устранило проблему.
В частности, я считаю, что это патч ...