Как я могу динамически выгрузить файл javascript?
Я включаю страницы с использованием Ajax, но мне также необходимо включить их соответствующие файлы javascript, что требует одновременного удаления предыдущих файлов javascript из памяти.
Как я могу выгрузить загруженные в настоящее время файлы javascript (а также их код в памяти), чтобы я мог загружать новые файлы страниц? Они, скорее всего, конфликтуют, поэтому загружаются файлы javascript с несколькими независимыми файлами.
Ответы
Ответ 1
Это действительно похоже на то, что вам нужно переоценить свой дизайн. Либо вам нужно сбросить ajax, либо вам не нужно иметь столкновений в именах методов.
Вы можете просмотреть эту ссылку: http://www.javascriptkit.com/javatutors/loadjavascriptcss2.shtml
Что дает информацию о том, как удалить javascript из DOM. Однако современные браузеры оставят код в памяти в браузере.
Ответ 2
Нет, вы не можете этого сделать. Как только блок JavaScript загружается в браузер и выполняется, он сохраняется в памяти браузера в рамках соответствующего окна. Невозможно выгрузить его (без обновления страницы/закрытия окна).
Ответ 3
вы можете просто просто прописать свой код.. таким образом вы предотвратите столкновения
var MyJavaScriptCode = {};
MyJavaScriptCode.bla = function() {};
Ответ 4
На самом деле это вполне возможно. Вы можете заменить элемент script или link.
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
Вы можете узнать некоторые трюки там, кстати.
Ответ 5
Можно выгрузить файл javaScript, очистив весь код из браузера. Шаги:
- Дай идентификатор цели " "элемент (например," mainJs ", указывающий на" main.js ")
- Создайте другой файл JS (например, "flush.js") с теми же функциями и переменными в "main.js" и убедитесь, что содержимое функций и переменных пустое.
- После того, как "main.js" был использован, мы очищаем его, удаляя элемент " script # mainJs " и динамически загружая "flush.js" в дерево DOM.
пример
mainJs = document.getElementById("mainJs");
document.head.removeChild(mainJS);//Remooves main.js from the DOM tree
flushFile = document.createElement("script");
flushFile.setAttribute("src", "flush.js");
document.head.appendChild(flushFile);//Loads flush.js into the DOM tree, overwriting all functions and variables of main.js in browser memory to null
Это