Javascript / JQuery: очистка после раз выполненных тегов сценария - PullRequest
2 голосов
/ 27 октября 2011

У меня есть страница, которая использует технику длинного опроса для частичного возврата данных с сервера, создавая теги сценариев, содержащие выражения IIFE, которые будут выглядеть примерно так:

<script>
  (function(){ 
      $("#blah").append("Some new data");
  })();
</script>

Если я получу МНОГО этих избыточных тегов <script>, особенно если Новые данные относительно велики, я боюсь, что они начнут замедлять страницу.
Будет ли какой-либо выигрыш в производительности при удалении тега script из DOM после его выполнения?

<script id="thescript">
  (function(){ 
      $("#blah").append("Some new data");
  })();
  $("#thescript").remove();
</script>

РЕДАКТИРОВАТЬ: Я чувствую, что этот вопрос стал крушение поезда и намерение было неясным. Извиняюсь. В конечном счете, действительно ищу ответ на другой вопрос, и это один ошибочный шаг на этом пути.

1 Ответ

2 голосов
/ 27 октября 2011

Вместо этого вы можете просто вернуть JavaScript и использовать метод jQuery $.getScript().

Edit:

Может быть, это был бы более прямой ответ.

Если вы запрашиваете скрипт в виде обычного текста, вы можете добавить его в заголовок и удалить.

$.get(url,function(str){
  var head = $("head"),
      script = $(str);
  head.append(str);
  str.remove();
},"text");

На самом деле я не пробовал этого, поэтому я не уверен на 100%, что это сработает. Это звучит логично, хотя.

Другой вариант - загрузить скрипт в определенный элемент, а затем очистить элемент. Это должно иметь тот же эффект.

Снова отредактируйте: вы можете прикрепить теги скрипта внутри определенного элемента к классу, а затем удалить этот элемент в случае успешного вызова ajax, поскольку вы возвращаете больше, чем просто тег скрипта.

...