如何从一个js文件加载所有脚本,样式表和标记?

时间:2010-10-22 05:34:52

标签: javascript jquery html css

以下小代码段在部署后无法更改(它在RIA中),因此必须通过bootstrapper.js文件加载所有代码:

<div id="someDivID"></div>
<script type="text/javascript" src="bootstrapper.js"></script>

加载所有js,css和markup的最佳方法是什么?是否有比以下更好(更清洁,更快速,更清晰)的方式?:

function createDivs() {
  var jsDiv = document.createElement('div');
  jsDiv.id = 'allJavascriptHere';

  var contentDiv = document.createElement('div');
  contentDiv.id = 'allContentHere';

  document.getElementById("someDivID").appendChild(jsDiv);
  document.getElementById("someDivID").appendChild(contentDiv);

  function importScript(url){
     var script = document.createElement('script');
     script.type = 'text/javascript';
     script.src = url;
     document.getElementById("jsDiv").appendChild(script);
  }

    importScript("http://example.com/jquery-1.4.2.min.js");
    importScript("http://example.com/anotherScript.js");
 }

 window.onload = function(){

   $.get("http://example.com/someHTML.html", function(data) {
      $('#contentDiv').html(data);
      setTimeout("javaScript.init()", 200);
   });
 }

someHTML.html文件中使用样式表:

<style type="text/css">
   @import url("example.com/styleSheet.css");
</style>

(注意:我不知道为什么我需要setTimeout,但出于某种原因我可以。也许你的答案不需要它。)

3 个答案:

答案 0 :(得分:4)

您可以使用jQuery的$.getScript()导入脚本。

我最近写了一个导入CSS的函数。

var getCss = function(file, callback) {

    if (typeof callback !== 'function') {
        throw 'Not a valid callback';
    };

    $.get(file, function(css) {

        var top = $('head > link[rel=stylesheet]').length ? $('head > link[rel=stylesheet]:last') : $('head > *:last'); 

        top.after('<link rel="stylesheet" type="text/css" href="' + file + '">');

        callback();

    });


};

答案 1 :(得分:0)

如果您的css也在该js文件中,您只需将css代码添加到文档样式标记即可。在某些情况下,它可能很有用,其中不允许使用不同的css文件等。

答案 2 :(得分:0)

如果您希望以类似于$.getScript的简单方式异步加载CSS,请查看loadCSS,这是一个独立的库,用于加载CSS而不依赖于jQuery。