Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Динамическое удаление js файла (https://javascript.ru/forum/jquery/35117-dinamicheskoe-udalenie-js-fajjla.html)

olexand777 30.01.2013 23:56

Динамическое удаление js файла
 
$.ajax({
            type: "GET",
            url: js,
            dataType: "script"
        });

Идет загрузка и выполнение скрипта, при переходе на следующую страничку мне нада сделать чтобы этот скрит удалился, ну или хотябы остановить его.

danik.js 31.01.2013 00:46

При переходе на другую страницу браузер полностью останавливает все скрипты и выгружает все из памяти. Если конечно вы не используете history.pushState()

olexand777 31.01.2013 00:48

я пользуюсь history.pushState() в меня странички динамически подгружаются...

olexand777 31.01.2013 00:55

в есть одна страничка, где я подгружаю скрипты там есть setInterval() после каждого раза, когда я захожу на эту страничку в меня получается уже несколько setInterval и уже норм не работает...

danik.js 31.01.2013 00:58

clearInterval() вам в помощь

olexand777 31.01.2013 01:22

я думал над этим, но в идеале было бы динамически удалить скрипт как то...

danik.js 31.01.2013 01:29

Какой еще идеал? Что значит удалить скрипт? Браузер его загрузил с сервера (или из кэша), передал javascript-движку исходный код, тот его распарсил, заeval'ил, поместил в память созданные объекты, функции и т.п. Теперь неважно что там с тегом script (источником).
Не нужен объект - удали все ссылки на него, сборщик мусора высвободит память. Не нужно выполнять функцию по установленному интервалу - вызывай clearTimeout( timerId ). Или подумай об изменении архитектуры приложения - зачем постоянно запускать и останавливать одни и те же функции?

DjDiablo 31.01.2013 02:30

это бред
не нужно нечего удалять

даже если вы два раза умудряетесь подключить скрипт, то и это непроблема
пример ниже два раза подключает скрипт, но работает только первый из них

хотя по уму, хорошобы избежать двойного подключения скриптов вообще. А скрипты инициализировать и перезапускать по событиям. Ну да хрен с ним, на безрыбье и рак рыба как говорится :)

первая копия скрипта
<script>
   (function(){
      if (window.flag)  return;
      window.flag=true;
      setTimeout(function(){
          alert("я первая копия скрипта");
      },1000)      
   })()
</script>

<br/> вторая копия скрипта
<script>
   (function(){
      if (window.flag)  return;
      window.flag=true;
      setTimeout(function(){
          alert("я вторая копия скрипта");
      },1000)      
   })()
</script>

olexand777 31.01.2013 15:10

лан спасибо большое ребята за объяснение, ща буду думать как исправить

Deff 31.01.2013 15:15

olexand777,
Где то было сообщение от devote, где он поменял в библиотеке (если чел использует его history API и тема была на этот счет
Ищите по нику devote


Часовой пояс GMT +3, время: 21:48.