我使用Twitter Bootstrap使用Buget安装到ASP.NET MVC应用程序。然而,我很惊讶地发现我曾经在localhost上运行的所有引导程序JavaScript,实际上在上传到我的网络托管服务提供商时仍然停止工作。
我完全被这个碰到了,我似乎无法弄清楚出了什么问题。
答案 0 :(得分:9)
在加载jQuery之前,一些依赖于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?关于该特定问题......
你说它在你的本地盒子而不是在远程服务器上工作 - 如果确实如此,那么我最好的猜测是,这与捆绑/缩小的工作方式不同,具体取决于你是在调试还是发布模式。
<强>更新强>
基本上,在调试版本中,不会对脚本和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,并确保您的样式/脚本包含在正确的顺序中。
答案 1 :(得分:1)
在你的页面中有
<link href="/Content/bootstrapcss" rel="stylesheet"/>
...文件类型有一个blip,也许这应该是
<link href="/Content/bootstrap.css" rel="stylesheet"/> ?
您的Modernizr文件存在路径问题,请检查路径是否正确且文件是否存在:
http://bipscore.com/Scripts/modernizr-1.7.min.js
可能还有其他问题,但首先要纠正这两个问题并不会有什么问题。
祝你好运!