вторник, 18 ноября 2008 г.

jQuery & JavaScript Memory Leaks

Перебирал я как-то старые закладки. Накопилось же всякого. Ну, например, куча ссылок по борьбе с утечками памяти:

  1. Практический JS: избавляемся от утечек памяти в IE
  2. Как избавиться от утечки памяти при использовании Javascript в Internet Explorer
  3. JavaScript Memory Leak Detector
  4. IE Memory Leaks
Да только с тех пор как я это прочел и попробовал, я нашел, как мне кажется, универсальный рецепт борьбы с утечками. И имя ему - jQuery. Мой код по большей части превратился в код без постоянных ссылок на DOM, которые и являются источником проблем.
Типичный пример кода:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
  $("#gmap").load(function() {
    $("#loading").hide();
    $(this).show();
  });

  $("#hmap").load(function() {
    $(this).show();
  }).attr("src", "hs.png");

  $("#hublist").bind("change keyup", function() {
    with ($("#gmap")) {
      var newurl = 'http://maps.google.com/staticmap?zoom=5&size=640x640&format=png8&center=' +
        ["57,40", "50,41", "57,42", "57,43", "57,48", "57,49"][this.value - 1];
      if (attr("src") != newurl) {
        $("#loading").show();
        attr("src", newurl);
      }
    }
  }).focus().change();
</script>
В общем, применение jQuery дает чистый, стабильный код.