我有2个不能共存的javascript文件。 如果用户单击一个按钮,则会加载一个js文件。 如果用户单击另一个按钮,则会加载另一个文件。但最后一个需要首先卸载
这通常是我所拥有的:
//pseudocode
if user clicks button one
loadScript(one);
if user clicks button two
loadScript(two);
//not psuedocode
function loadScript(name)
{
var javascriptLoc = name + "/config.js";
//Unload any scripts that were previously loaded by requirejs
require.undef(); //HELP
//once config.js is loaded by requirejs...
require([javascriptLoc], function(util) {
//do stuff
});
}
有没有办法卸载一个/ config.js并加载两个/ config.js 而不是?然后,当用户点击“one”时,它会加载一个/ config.js 而不是两个/ config.js?
提出问题的其他方式:
当我有独家依赖时,我在requirejs中做什么...
如何在requirejs中处理冲突解决 ...
如何重置或卸载以前由requirejs加载的脚本......
答案 0 :(得分:3)
严格来说,浏览器不允许您卸载JavaScript文件。如果你加载一个文件a.js说:
var a = 345;
JS / HTML中没有可以撤消该命令的命令。 (另请参阅here和here)
您可以加载一组新的JS命令来否定第一个文件的效果,例如:
if (typeof a === "undefined")
var a = 34;
else
a = 34;
虽然这开始变得复杂,不是吗?重新设计模块可能更容易,因此不需要重新加载,例如:
function option1() {
}
function option2() {
}
//if user clicks button 1
currentOption = option1();
//if user clicks button 2
currentOption = option2();