能不能删除动态加载的JS?

dongoyang2006 2012-05-08 09:39:12
我动态加载了1 个JS之前,要把前一个加载的JS删除。删除代码没有错误提示。可之后,前一个JS里的函数还是可以用。为什么?怎么解决这个?
...全文
216 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
dongoyang2006 2012-05-09
  • 打赏
  • 举报
回复
function jsLoad(jsFile) {
Tibetinput_OverRequest("loadJS");

var fileref=document.createElement('script'); //创建script标签
fileref.id = "loadJS" //给script标签定义ID
fileref.setAttribute("type","text/javascript");
fileref.src = jsFile;
document.body.appendChild(fileref);//插入body标签中
}
/**删除加载的JS*/
function Tibetinput_OverRequest(ID){ //ID为script标签的ID
try{
var Tibetinput_js = Tibetinput_getObj(ID);//id对应的document对象
document.body.removeChild(Tibetinput_js);//删除ID的对应标签
}
catch(e){}
}
//获取id对应的document对象
function Tibetinput_getObj(id) {//所有的情况都列出来了 不会出错··呵呵
if (document.getElementById) return document.getElementById(id);
else if (document.all) return document.all[id];
else if (document.layers) return document.layers[id];
else {return null;}
}

/*用户点击事件*/
function User_onClick(a){
switch (a){
case 1:
jsLoad('jscript01.js');
break;
case 2:
jsLoad('jscript02.js');
break;
default:
break;
}
dongoyang2006 2012-05-09
  • 打赏
  • 举报
回复
没有人会吗?自已顶一下。
乌镇程序员 2012-05-08
  • 打赏
  • 举报
回复
js文件一旦加载,就无法“卸载”了,“删除”操作只能从DOM树中删除script元素节点,想要让已经定义的函数不能再执行,可以这样做:
function demo() {
alert('DEMO');
}
/*方法一:把已定义的函数对象赋值为null,但以后再调用demo()函数会报错
demo = null;
demo();
*/
demo = new Function(); //方法二:将已定义的函数赋值为一个新的函数对象实例
demo(); //再调用demo()对象时不报错,但也不会执行任何操作
001007009 2012-05-08
  • 打赏
  • 举报
回复
楼主把你写的贴出来。

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧