Bootstrap JavaScript适用于本地主机,但不适用于虚拟主机
我正在使用Buget安装到ASP.NET MVC应用程序中的Twitter Bootstrap。然而,我惊奇地发现,我的所有bootstrap JavaScript过去在本地主机上工作,实际上在上传到我的虚拟主机提供商时仍然停止工作。Bootstrap JavaScript适用于本地主机,但不适用于虚拟主机
我完全碰到这一点,我似乎无法弄清楚什么是错的。
一些依赖于jQuery的脚本将在jQuery加载前被包含。
- 引导-dropdown.js是jQuery的之前包括
- 您的自定义JavaScript上线75的jQuery 前
我建议移动
<script src="/Scripts/bootstrap.js" type="text/javascript"></script>
<script type="text/javascript" src="http://twitter.github.com/bootstrap/assets/js/bootstrap-dropdown.js"></script>
和自定义包含的JavaScript从第75行开始,到包含jQuery包之后的页面底部。或者也可以将你的jQuery包放入你的<head>
。这是你的首选项 - 看到这个问题:Should Jquery code go in header or footer?关于那个特定的问题...
你说它在你的本地盒子上,而不是在远程服务器上 - 如果真的如此,那么我最好的猜测是,这与捆绑/缩小的工作方式不同,这取决于您处于调试模式还是发布模式。
UPDATE 基本上,在调试版本,没有捆绑/缩小时在你的脚本和CSS进行。您在捆绑中引用的每个<link>
和<script>
都将作为单独的文件包含在内,而不会对其应用转换。在发布版本中,捆绑包中的文件被连接在一起成为一个文件,并将诸如缩小等转换应用于它们。根据您的评论,为了获得本地和已发布站点的调试行为,我看到3个选项:
1.在您的发行版本中,将web.config中的编译调试标志设置为true。
即
<system.web>
<compilation debug="true" />
<!-- Lines removed for clarity. -->
</system.web>
我不会特别推荐这个,因为你的发布版本通常不应该被标记为正在调试。但这是一个有用的设置,可以快速切换到您的发布版本,以检查您的javascript/css在关闭时是否正常工作。
2.在代码中,关闭捆绑包表中的捆绑优化。
public static void RegisterBundles(BundleCollection bundles)
{
// other code...
BundleTable.EnableOptimizations = false;
}
3.不要这么做。
行为上的差异是设计上的,也是有意义的 - 在你的本地机器上进行开发时,你可以看到所有单独的脚本/ css文件,并且以非未定义的形式,这使得调试更容易。发布后,这些文件将压缩为一个压缩文件,这将减少您网站的加载时间。
我个人推荐选项3,并确保您的样式/脚本按正确的顺序包含在内。
在你的页面你有
<link href="/Content/bootstrapcss" rel="stylesheet"/>
...有与该文件类型昙花一现,或许这应该是
<link href="/Content/bootstrap.css" rel="stylesheet"/> ?
而且还有你的Modernizr的文件的路径问题,检查路径是正确的,文件存在:
http://bipscore.com/Scripts/modernizr-1.7.min.js
可能还有其他问题,但不会伤害到g先将这两个更正。
祝你好运!
是的我得出了捆绑和缩小问题的结论。它的工作方式取决于在发布模式还是调试模式下。任何想法如何规避这一点,因为我认为他们都是一个一样的 – 2013-04-05 17:26:15
@PeterEdike请参阅我的更新的答案。 – ngm 2013-04-08 07:57:10