Bootstrap JavaScript适用于localhost,但不适用于webhost

时间:2013-04-04 15:58:39

标签: asp.net-mvc-4 twitter-bootstrap

我使用Twitter Bootstrap使用Buget安装到ASP.NET MVC应用程序。然而,我很惊讶地发现我曾经在localhost上运行的所有引导程序JavaScript,实际上在上传到我的网络托管服务提供商时仍然停止工作。

我完全被这个碰到了,我似乎无法弄清楚出了什么问题。

2 个答案:

答案 0 :(得分:9)

在加载jQuery之前,一些依赖于jQuery的脚本被包含在内。

  • bootstrap-dropdown.js包含在jQuery之前
  • 第75行的自定义javascript包含在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  

可能还有其他问题,但首先要纠正这两个问题并不会有什么问题。

祝你好运!