Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将javascript文件链接到正文而不是标题中会导致问题吗?_Javascript_Jquery_Dom - Fatal编程技术网

将javascript文件链接到正文而不是标题中会导致问题吗?

将javascript文件链接到正文而不是标题中会导致问题吗?,javascript,jquery,dom,Javascript,Jquery,Dom,这就是我想做的 <script type="text/javascript" src="resources/application.js"></script> <script type="text/javascript" > $(document).ready(createHeader()); $(document).ready(scriptSet()); </script> $(文档).read

这就是我想做的

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

$(文档).ready(createHeader());
$(文档).ready(脚本集());

我希望避免将两者分开,虽然通常我只在标题中看到脚本链接,但文档的ready函数放在那里似乎不起作用。但是,如果将所有内容放在正文的末尾,它们似乎都可以完全正常工作,那么这会导致任何问题吗?还是这样好?

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

不,事实上,将脚本放在HTML末尾对“性能”有好处

还有一个很好的做法是将所有javascript放在另一个文件中,只要设置一个调用它的头,甚至可以压缩该文件

现在,我要为此更改代码

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

因此,您不需要调用$(document).ready两次:)

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

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

我已经部署了许多web应用程序,而且在body标记中从未遇到过脚本问题。我喜欢把它放在页面的末尾,这样就不会妨碍页面上可见元素的下载进度。我相信谷歌也用他们的一些脚本(可能是分析?)做到了这一点

正如其他人所说,确保在$(document.ready()之前有jQuery引用;呼叫很容易溜过去,也很难排除故障:)


JMax

如果将脚本包含和块放在
主体
元素中,通常并不重要;在大多数情况下,它们运行得很好。有些人认为这是一种不好的做法,但这并不是一种错误的做法。这种事经常发生

但是,我想指出的是,将
$.ready()
函数调用放在何处并不重要,只要它在jQuery include之后,因为它总是在DOM准备就绪之后运行(这将在页面加载之后发生)。所以,在这种情况下,没有任何区别

注意函数调用中的匿名函数。这将为匿名函数传递对
$.ready()
的引用,该函数允许其函数体在以后执行,因此您的函数将在以后被调用

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

$(文档).ready(函数(){
createHeader();
脚本集();
}); 

在功能上,只要将代码封装在
$(document.ready(function(){})中
它出现在jQuery文件包含的之后,不管它是在
头部
还是在
正文
中<代码>$(document).ready
确保在执行任何脚本之前完全加载DOM

但是将所有脚本包括和脚本放在
正文的底部
对于加载性能来说是最好的

示例:

        <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>

//

在这些脚本之前,您是否有jquery库的参考?此外,您不需要在一个文件中包含多个
$(document).ready()
。为什么在ready()调用中不包含匿名函数?我通常在标题中包含库(jQuery、插件等),在正文中直接链接特定于页面的脚本。根据我的经验,这样很好。贾里德是对的!如果您希望将脚本文件中定义的函数的直接引用提供给ready事件处理程序,那么我认为它应该没有括号:document.ready(createHeader);否则,请定义一个匿名函数。我不知道为什么将
.ready()
调用放在页面末尾的性能会很重要,而在
.ready()
调用中缺少匿名函数。确实,我所说的性能不是因为ready。当您在html的末尾设置javascript时,页面将在javascript的末尾进行解析,因此看起来它似乎“加载得更快”,这并不是真正的性能提升,只是看起来像是这样。顺便说一句,我添加了匿名函数:)严格地说,即使是
$.ready()
也必须下载jQuery脚本,这是性能因素。将所有脚本(非包含)放在底部似乎有点过分(即使是雅虎主页也不这样做,尽管它大部分都这样做),但是如果该网站有很多图片或其他内容要下载,或者是一个流量非常高的网站(像这样),脚本包含可能应该放在底部(以及任何需要这些功能的脚本)@Jared:是的,
ready
在jQuery includes之后。我应该发布一个例子。@Sparky你链接到的那篇文章非常好,整个性能系列对于任何建立网站的人来说都是必读的。谢谢你的指点!嗯,你能告诉我在哪里可以获得更多关于为什么这样做的信息吗仔细读一读,你是说?还是?