假设我有3种语言:en
,tc
,sc
,我想达到以下条件
1)如果当前为en
,请在en.js
tc.js
并删除js文件sc.js
和head
2)当前的电流为tc
时,添加tc.js
至头部并移除sc.js
中的js文件en.js
和head
3)如果当前为sc
,请在sc.js
tc.js
并删除js文件en.js
和head
有人可以建议如何在jQuery中做到这一点吗?
由于
答案 0 :(得分:14)
这是一个快速函数,可以根据语言参数动态加载脚本。
addLanguageScript = function(lang) {
var head = document.getElementsByTagName("head")[0],
script = document.createElement('script');
script.type = 'text/javascript'
script.src = lang + '.js'
head.appendChild(script);
};
addLanguageScript('en');
要删除文件,您可以在jQuery中执行某些操作,但请记住脚本 加载它们可能已经产生了一些影响。
$("script[src='en.js']").remove()
答案 1 :(得分:3)
加载document
后,您无法动态执行此操作。但是有一个脚本require.js,它是一个JavaScript文件和模块加载器。
它针对浏览器内使用进行了优化,但可以在其他JavaScript环境中使用,例如Rhino和Node。使用像RequireJS这样的模块化脚本加载器可以提高代码的速度和质量。
它对use it with jQuery有很好的支持。您可能还希望在页面加载后动态加载代码。查看上面的链接,它肯定会针对您的问题。
答案 2 :(得分:2)
为什么要先删除文件?如果他们在页面头部,则意味着他们已经被执行了。
使用Yesnope JS模块加载器,解决方案将如下:
yepnope({
test : lang=="en",
yep : ['en.js']
});
BTW,这个模块加载器用于Modernizr。
答案 3 :(得分:0)
add and remove dynamically files in head section
function loadjscssfile(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)
}
if (typeof fileref!="undefined")
document.getElementsByTagName("head")[0].appendChild(fileref)
}
通话功能:
loadjscssfile("myscript.js", "js") //dynamically load and add this .js file
loadjscssfile("javascript.php", "js") //dynamically load "javascript.php" as a JavaScript file
loadjscssfile("mystyle.css", "css") ////dynamically load and add this .css file
删除:
$('head script[src*="en.js"]').remove(); // for removing dynamically
$('head script[src*="en.js"]').append(); // for append dynamically