是否会在正文中而不是在标题中链接javascript文件会导致问题?
这就是我想要做的事情
$(document).ready(createHeader()); $(document).ready(scriptSet());
我希望避免将两者分开,虽然我通常只在标题内部看到脚本链接,但是文件.ready函数在放在那里时似乎不起作用。 然而,当放置在身体的末端时,一切似乎都完全正常,所以这会导致任何问题或者这很好吗?
从function上讲,只要将代码括在$(document).ready(function(){ });
它是在 jQuery文件包含之后,无论是在head
还是在body
中都没关系。 $(document).ready
确保在执行任何脚本之前完全加载DOM。
但是 ,将所有脚本包含和脚本放在body
的底部最适合加载性能。
这篇文章解释得很好。
例:
在正文中使用脚本标记没有问题。 请记住,页面是自上而下解析的,因此必须在使用之前包含脚本。
你确实意识到你放在$(document).ready()
中的函数不会等待DOMContentLoaded
触发吗? 您必须将它们包装在函数调用(事件处理程序)中,以避免在它们出现在代码中时立即调用它们。 匿名函数通常很好。
$(document).ready(function(){ createHeader(); scriptSet(); });
我已经部署了许多Web应用程序,并且从未遇到过body标签中的脚本问题。 我喜欢将它放在页面的末尾,以免妨碍页面上可见元素的下载进度。 我相信谷歌也已经用他们的一些脚本(也许是分析?)来做到这一点。
就像其他一些人所说的那样,确保你在$(document).ready()之前有你的jQuery引用; 呼叫。 它很容易滑过,很难排除故障:)
JMAX
事实上,Nop对于将脚本放在HTML末尾的“性能”很有帮助。
仍然是一个很好的做法是将所有javascript都放在另一个文件中,并设置一个标题来调用它,如果可能甚至压缩文件。
现在,我会改变这个代码
$(document).ready(function(){ createHeader(); scriptSet(); });
所以你不要再调用$(document).ready两次:)
如果将脚本include和块放在BODY
元素中,通常无关紧要; 在大多数情况下,它们会完美运行。 有些人认为这是一种不好的做法,但这不是一种错误的做法。 它一直在发生。
但是,我想指出,只要在jQuery包含之后放置$.ready()
函数调用就没关系,因为它总是在DOM准备就绪后运行(这将发生在AFTER之后)页面加载)。 所以,在这种情况下,它没有任何区别。
注意函数调用中的匿名函数。 这为匿名函数传递$.ready()
的引用,允许它的函数体稍后执行,因此稍后会调用你的函数。