如何包含外部JS文件而不将它们包含在head标签中?

时间:2014-08-09 20:02:00

标签: javascript html5 yui

我关注this tutorial to create a tabbed view。我们可以看到,我们在<head>部分中包含了 四个外部JS文件

<script type="text/javascript" src="http://yui.yahooapis.com/2.5.0/build/yahoo-dom-event/yahoo-dom-event.js"></script>
    <script type="text/javascript" src="http://yui.yahooapis.com/2.5.0/build/element/element-beta-min.js"></script>
    <script type="text/javascript" src="http://yui.yahooapis.com/2.5.0/build/connection/connection-min.js"></script>
    <script type="text/javascript" src="http://yui.yahooapis.com/2.5.0/build/tabview/tabview-min.js"></script>

然后在<body>中,与标签相关的唯一JS代码是

<script type="text/javascript">
    var myTabs = new YAHOO.widget.TabView("content-explorer");
</script>

问题: -

由于某些原因,我无法在<head>标记中添加任何代码。 那么有什么办法可以在<{em> external JS files之前将JS包含在var myTabs = new YAHOO.widget.TabView("content-explorer");代码中吗?

1 个答案:

答案 0 :(得分:1)

有几种方法可以做到这一点,但最简单的方法是在JavaScript中创建一个script元素,并在运行时将其附加到文档中。

为简单起见,我已在此处循环完成此操作以容纳要包含的脚本数量; resources是一个字符串数组,其中包含指向资源的网址。位置:

<script>
    //array of scripts to include
    var resources = ["http://yui.yahooapis.com/2.5.0/build/yahoo-dom-event/yahoo-dom-event.js", "http://yui.yahooapis.com/2.5.0/build/element/element-beta-min.js", "http://yui.yahooapis.com/2.5.0/build/connection/connection-min.js", "http://yui.yahooapis.com/2.5.0/build/tabview/tabview-min.js"];

    for(var i = 0; i < resources.length; i++){
        var script = document.createElement("script");
        script.setAttribute("type", "text/javascript");
        script.setAttribute("src", resources[i]);
        document.getElementsByTagName("head")[0].appendChild(script);
    }

    //stuff to do after scripts have loaded
    var myTabs = new YAHOO.widget.TabView("content-explorer");
</script>