在MVC4
中,视图的页面底部包含script
元素。
EG。在_layout.cshtml
(Shared
文件夹下),<script>
标记位于最底部。虽然我知道这会使页面加载速度更快,但问题实际上是这样的:
在我的Views
中,有时我碰巧会使用像autocomplete
这样的脚本,如下所示:
<script type="text\javascript">
......
</script>
不起作用,因为scripts
标记包含在页面的最后。 (当时甚至没有加载JQuery)
痛苦地说,我不得不将Script Bundle rendering
移到页面顶部。像,
render jquery first
then load scripts
所以,我错过了什么或者我应该始终将scripts
标记放在_layout.cshtml
页面的顶部吗?
感谢您的回复。
答案 0 :(得分:4)
确定。关键是:
将您的脚本anywhere
放入您的网页,但将其封在@section Scripts
内。
这将确保无论您放置脚本的哪个位置,都包含_layout.cshtml' renders them with the
JQuery`。
因为,在你的_layout.cshtml
中有这个:
@Scripts.Render("~/bundles/RequiredBundles")
@RenderSection("scripts", required: false)
答案 1 :(得分:0)
您可能希望在$ .ready中放入一些脚本,这些脚本只会在整个页面加载时运行。
答案 2 :(得分:0)
我认为代码生成的原因是这样的,如果你将自己的脚本添加到包中,那么它们会在大部分html主体加载到dom之后执行。
如果你确保在编写自定义javascript时使用$ .ready,那么你应该没有问题,无论它们是在页面底部还是在head标签中。
出于个人喜好,我将它们放在顶部(我只需要查看head标签以查找加载的脚本)并确保使用$ .ready。