是否会在正文中而不是在标题中链接javascript文件会导致问题?

时间:2011-07-27 02:01:27

标签: javascript jquery dom

这就是我想要做的事情

<script type="text/javascript" src="resources/application.js"></script>
    <script type="text/javascript" >
       $(document).ready(createHeader()); 
       $(document).ready(scriptSet()); 
    </script>

id喜欢避免将两者分开,虽然我通常只在标题内部看到脚本链接,但是文件.ready函数在放在那里时似乎不起作用。然而,当放置在身体的末端时,一切似乎都完全正常,所以这会导致任何问题或者这很好吗?

6 个答案:

答案 0 :(得分:8)

从功能上讲,只要您将代码包含在$(document).ready(function(){ }); 中, > jQuery文件包含后,就不会 strong>问题,如果它在headbody中。 $(document).ready确保在执行任何脚本之前完全加载DOM。

HOWEVER ,将body底部的所有脚本包含和脚本放在最佳中,以便加载效果。

This article explains it nicely.

示例:

        <body>

    <!-- MY HTML CODE -->

    <!-- START javascript -->
        <script type="text/javascript" src="/javascript/jquery/jquery-1.6.2.min.js"></script>
        <script type="text/javascript" src="/javascript/jquery/plugins/jquery.random_plugin.js"></script>
        <script type="text/javascript" src="/javascript/jquery/plugins/jquery.random_plugin2.js"></script>
        <script type="text/javascript" src="/javascript/some_other_scripts.js"></script>

        <script type="text/javascript" language="JavaScript">
        //<![CDATA[
            $(document).ready(function(){
                // my code
            });
        //]]>
        </script>
    <!-- END javascript -->

        </body>

答案 1 :(得分:1)

在正文中使用脚本标记没有问题。请记住,页面是自上而下解析的,因此必须在使用之前包含脚本。

答案 2 :(得分:0)

Nop,实际上它可以将你的脚本放在HTML的末尾。“/ p>

一个好的做法是将所有的javascript都放在另一个文件中,只需设置一个标题来调用它,如果可能的话甚至压缩文件。

现在,我会更改此代码

$(document).ready(function(){
    createHeader();
    scriptSet();
}); 

所以你不要再调用$(document).ready两次:)

答案 3 :(得分:0)

您是否意识到您在$(document).ready()内放置的功能不会等待DOMContentLoaded触发?您必须将它们包装在函数调用(事件处理程序)中,以避免在它们出现在代码中时立即调用它们。匿名函数通常都可以。

$(document).ready(function(){
    createHeader();
    scriptSet();
});

答案 4 :(得分:0)

我已经部署了许多Web应用程序,并且脚本在body标签中没有遇到任何问题。我喜欢将它放在页面的末尾,以免妨碍页面上可见元素的下载进度。我相信谷歌也已经用他们的一些脚本(也许是分析?)来做到这一点。

就像其他一些人所说的那样,确保在$(document).ready()之前有你的jQuery引用;呼叫。它很容易过去,很难排除故障:)

JMAX

答案 5 :(得分:0)

如果将脚本include和blocks放在BODY元素中,通常无关紧要;在大多数情况下,它们会完美运行。有些人认为这是一种不好的做法,但这不是一种错误的做法。它一直都在发生。

但是,我想指出,只要在jQuery包含之后放置$.ready()函数调用就没关系,因为它总是在DOM准备就绪后运行(其中将在页面加载后发生)。因此,在这种情况下,它没有任何区别。

注意函数调用中的匿名函数。它为匿名函数传递$.ready()的引用,允许它的函数体稍后执行,因此稍后将调用函数。

<script type="text/javascript">
$(document).ready(function(){
    createHeader(); 
    scriptSet();
}); 
</script>