Нужно ли явно выгружать & rdquo; динамически загруженный javascript? [Дубликат]

Общее решение для интерпретации char как строки - string("HELLO"[1]).

Решение Rich также работает, конечно.

25
задан Jackie 26 February 2009 в 18:57
поделиться

4 ответа

Нет, вы не можете этого сделать. Как только блок JavaScript загружается в браузер и выполняется, он сохраняется в памяти браузера в рамках соответствующего окна. Невозможно выгрузить его (без обновления страницы / закрытия окна).

8
ответ дан Bo Persson 18 August 2018 в 01:05
поделиться

Это действительно звучит так, будто вам нужно переоценить свой дизайн. Либо вам нужно отказаться от ajax, либо вам не нужно иметь коллизий в именах методов.

Вы можете просмотреть эту ссылку: http://www.javascriptkit.com/javatutors/loadjavascriptcss2.shtml

Что дает информацию о том, как удалить javascript из DOM. Однако современные браузеры оставят код в памяти в браузере.

11
ответ дан NotMe 18 August 2018 в 01:05
поделиться
  • 1
    facebook использует тот же метод и сохраняет код в чистоте, поэтому они не смешиваются. правильный объектно-ориентированный код мог бы сделать хорошую работу, поэтому конфликт не возникает. – Basit 26 December 2011 в 15:40
  • 2
    Современные мусорщики браузера собираются. Если ссылки на удаленный код будут потеряны, в конечном итоге он станет кандидатом на сбор мусора. – Ray Foss 4 February 2014 в 17:02
  • 3
    @ray: "современный" в отношении моего ответа было 4 года назад .. GC был не очень хорошо сделан; Честно говоря, я не знаю, улучшились ли они сегодня. – NotMe 4 February 2014 в 20:37

вы можете просто просуммировать свой код .. таким образом вы предотвратите столкновения

var MyJavaScriptCode = {};

MyJavaScriptCode.bla = function () {};

6
ответ дан Orlando 18 August 2018 в 01:05
поделиться
  • 1
    Также будьте осторожны, что вы экспортируете. Вы можете получить большой контроль, используя шаблон модуля: window.someModule = (function () { /* build your module components here */ return { someComponent: myComponent, anotherComponent: myOtherComponent }; }()). Конечно, вы должны просто использовать RequireJS или другую библиотеку для выгрузки ненужных проблем. – Keen 24 June 2014 в 17:03

На самом деле это вполне возможно. Вы можете заменить скрипт или элемент ссылки.

function createjscssfile(filename, filetype){
if (filetype=="js"){ //if filename is a external JavaScript file
  var fileref=document.createElement('script')
  fileref.setAttribute("type","text/javascript")
  fileref.setAttribute("src", filename)
}

else if (filetype=="css"){ //if filename is an external CSS file
  var fileref=document.createElement("link")
  fileref.setAttribute("rel", "stylesheet")
  fileref.setAttribute("type", "text/css")
  fileref.setAttribute("href", filename)
}
  return fileref
}

function replacejscssfile(oldfilename, newfilename, filetype){
var targetelement=(filetype=="js")? "script" : (filetype=="css")? "link" : "none" //determine element type to create nodelist using
var targetattr=(filetype=="js")? "src" : (filetype=="css")? "href" : "none" //determine corresponding attribute to test for
var allsuspects=document.getElementsByTagName(targetelement)
for (var i=allsuspects.length; i>=0; i--){ //search backwards within nodelist for matching elements to remove
    if (allsuspects[i] && allsuspects[i].getAttribute(targetattr)!=null && allsuspects[i].getAttribute(targetattr).indexOf(oldfilename)!=-1){
        var newelement=createjscssfile(newfilename, filetype)
        allsuspects[i].parentNode.replaceChild(newelement, allsuspects[i])
    }
  }
}

вы должны заполнить параметры имени файла как атрибут src и filetype как «js» или «css»

Я думаю, что нет необходимости объясните код. Также вы опубликовали в 2009 году, но эй. Может, кому-то это понадобится? :)

Все кредиты идут на: http://www.javascriptkit.com/javatutors/loadjavascriptcss2.shtml

Вы можете узнать некоторые трюки там, кстати, .

2
ответ дан st. 18 August 2018 в 01:05
поделиться
  • 1
    Удаляет ли это код из памяти браузера или просто удаляет ссылку в html для кода? – cale_b 30 April 2012 в 21:11
  • 2
    @cale_b Это не удаляет его из памяти браузера и, следовательно, не имеет смысла это делать. – RN Kushwaha 18 September 2015 в 07:36
  • 3
    Загрузите другой файл js с теми же именами функций с пустым телом, который заменяет память. Протестировано и работает. – Vignesh Bhaskar 28 September 2016 в 19:12
  • 4
Другие вопросы по тегам:

Похожие вопросы: