- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道最好将 javascript/jquery 放在页面底部。
但我究竟该如何实现这种“最佳实践”?
在我当前的 web 项目 (MVC4) 中,我将 javascript 放在了底部。但是除非我将我的 javascript 放在 header 中(这被认为是不好的做法?),否则我无法进行任何工作。
<body>
<div id="container">
<div id="header">
</div>
<div id="content">
<!--js function that calls upon jQuery (slider) -->
</div>
</div>
<!--Javascript declaration-->
</body>
例如:
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript" src="js/slider.js"></script>
函数 slider.js 需要 jQuery 才能使我的 slider 工作。
有没有办法将我所有的 javascript 文件(包括 jQuery)保留在底部并在函数需要访问它时加载 jQuery(或其他函数/库)?
更新
问题似乎出在 MVC bundles 上。当我将 javascript 文件放在底部的正常语法中时,一切正常。
是否需要单独的 bundle ?不确定 MVC 以何种顺序加载包。
在应用这种bundle时(先是jquery然后是js函数)执行顺序是错误的。
因此我无法真正看到捆绑的优势,有人愿意解释一下吗?
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-1.7.1.js",
"~/Scripts/js/slider.js"));
谢谢。
最佳答案
之所以这样好,是因为浏览器会与网页同步加载脚本。所以如果你把它们放在顶部,加载大的脚本会拖延内容加载。如果将它放在 body 标签结束之前的底部,内容将首先加载,从而使页面弹出速度更快,而不会出现脚本停顿。
要解决您的问题,请将所有执行代码包装在 document.ready 或等效的 jquery 中:
$(function(){
//your code here
})
如果 jQuery 还没有加载,你可以用 console.log 检查:
if(!window.jQuery)
{
console.log("problem");
}
您在这里没有提供太多信息,这使得调试变得困难。我所能做的就是给你做的步骤。您只需确保在页面上运行任何其他脚本之前加载 jQuery。
您的页面中是否有内嵌脚本标签?
关于javascript - 如何在 (MVC) 中将 js/jquery 保持在底部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14572091/
我是一名优秀的程序员,十分优秀!