如何在头部添加或删除js文件

时间:2012-10-12 07:14:41

标签: jquery

假设我有3种语言:entcsc,我想达到以下条件

1)如果当前为en,请在en.js

中添加tc.js并删除js文件sc.jshead

2)当前的电流为tc时,添加tc.js至头部并移除sc.js中的js文件en.jshead

3)如果当前为sc,请在sc.js

中添加tc.js并删除js文件en.jshead

有人可以建议如何在jQuery中做到这一点吗?

由于

4 个答案:

答案 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']
});

http://yepnopejs.com/

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