我的网站运行在ajax“框架”上。每当用户打开新页面时,该页面将加载必要的css和js文件以正确查看页面并将其添加到当前文档中。 js文件在jQuery中加载如下:
function getJS(jsfiles) {
$.each(jsfiles, function(i, val) {
$.getScript(val);
});
}
我的问题是无论何时加载js文件,该文件都会永久地添加到文档中,并在所有ajax“子站点”中运行。因此,我遇到了保留函数名称的问题,执行时需要某些DOM元素存在的函数,否则会抛出错误等等。有没有办法再次从文档中删除这些文件?
答案 0 :(得分:1)
您可以使用self-executing function确定要加载的JavaScript文件的内容范围。或者尝试为脚本块分配ID并通过执行以下操作删除它们:$("id of the script block").remove();
。
答案 1 :(得分:1)
我不知道jQuery如何附加新脚本,但您可以执行AJAX请求并在回调中构建自己的脚本元素,为它们提供一个可以在以后选择删除的类。
$.ajax({
url:'test.js',
dataType: 'text',
success: function(script) {
var head = document.getElementsByTagName('head')[0];
var scr_elem = document.createElement('script');
scr_elem.setAttribute("class","new_script");
scr_elem.setAttribute("className","new_script");
scr_elem.type="text/javascript";
scr_elem.appendChild(document.createTextNode(script));
head.appendChild(scr_elem);
}
});
// Later on
$('.new_script').remove();
请注意,我只在Webkit和Firefox中测试过这个。
答案 2 :(得分:-2)
您可以尝试做类似的事情
$('head').empty();
$('head').append('<script src="yourscript.js" type="text/javascript" />');
希望这有帮助