Подтвердить что ты не робот

Как я могу динамически выгрузить файл javascript?

Я включаю страницы с использованием Ajax, но мне также необходимо включить их соответствующие файлы javascript, что требует одновременного удаления предыдущих файлов javascript из памяти.

Как я могу выгрузить загруженные в настоящее время файлы javascript (а также их код в памяти), чтобы я мог загружать новые файлы страниц? Они, скорее всего, конфликтуют, поэтому загружаются файлы javascript с несколькими независимыми файлами.

4b9b3361

Ответ 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, очистив весь код из браузера. Шаги:

  1. Дай идентификатор цели " "элемент (например," mainJs ", указывающий на" main.js ")
  2. Создайте другой файл JS (например, "flush.js") с теми же функциями и переменными в "main.js" и убедитесь, что содержимое функций и переменных пустое.
  3. После того, как "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

Это