IE 8 - 脚本并不总是加载

时间:2012-02-29 13:41:54

标签: javascript asp.net-mvc internet-explorer razor

这是我团队中常见的问题。由于没有任何理由,IE8有时只加载脚本。我使用asp.net mvc3,并且通过_layout.cshtml加载了一些脚本(这就像我所有其他页面都继承的母版页)。另一堆脚本仅在需要时加载。我必须提一下,我开始使用Head.js来加载我的脚本。我实际上希望它能解决IE8脚本加载问题。

这些问题不会发生在firefox或chrome上(这是另一个动机,我确定它只发生在IE上)。而且看起来,如果一个脚本在IE8上中断,这个中断会通过其他脚本传播。

我知道这可能是一个太宽泛的问题,只能通过上述情况来解决。所以我想知道的是你有这样的问题吗?如果是的话,你做了什么来解决它?我真的很感谢一些方向,因为我必须使用IE浏览器。

以下是按照加载顺序在_layout.cshtml上加载的脚本:

  • Head.js;
  • 的jquery-1.5.1.min.js;
  • Modernizr的-1.7.min.js;
  • 的jquery-UI-1.8.11.min.js;
  • jquery.ui.datepicker-PT-BR.js;
  • jquery.validate.min.js;
  • jquery.validate.unobtrusive.min.js;

这些是我在某些页面上使用的其他一些脚本(它不在他们的顺序中):

  • 的jquery-blockUI.js;
  • jquery.jqGrid-4.1.2.min.js;
  • jquery.orbit-1.2.3.min.js;
  • jquery.jqplot.min.js(以及其中一些渲染器);
  • jquery.form.wizard-min.js;
  • ZeroClipboard.js;

修改

作为T.J.要求提供一些代码,因为只使用脚本名称很难识别问题,就在这里。

在_layout.cshtml上加载的脚本

<head>
<script src="@Url.Content("~/Scripts/head.min.js")" language="javascript"  type="text/javascript"></script>

//Lots of css files loaded mostly through document.write

<script type="text/javascript" language="javascript">
        //        if (head.browser.mozilla || head.browser.webkit || head.browser.opera ||
        //      (head.browser.ie && (head.browser.version == '9.0'))) {
        head.js('@Url.Content("~/Scripts/jquery-1.5.1.min.js")')
                .js('@Url.Content("~/Scripts/modernizr-1.7.min.js")')
                .js('@Url.Content("~/Scripts/jquery-ui-1.8.11.min.js")')
                .js('@Url.Content("~/Scripts/jquery.ui.datepicker-pt-BR.js")')
                .js('@Url.Content("~/Scripts/jquery.validate.min.js")')
                .js('@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")');
        if (screen.width == 1024) {
            head.js('@Url.Content("~/Scripts/resolucao1024.js")');
        } else {
            head.js('@Url.Content("~/Scripts/resolucaoMaior1024.js")');
        }
</script>
@RenderSection("Header", false)
</head>

在图表和图形页面上加载的脚本

@section Header{
<script type="text/javascript" language="javascript">
        head
        .js('@Url.Content("~/Scripts/jquery-blockUI.js")')
        .js('@Url.Content("~/Scripts/jqGridMVC/grid.locale-pt-br.js")')
        .js('@Url.Content("~/Scripts/jqGridMVC/jquery.jqGrid-4.1.2.min.js")')
        .js('@Url.Content("~/Scripts/jquery-ConfigAjax.js")')
        .js('@Url.Content("~/Scripts/jqPlot/jquery.jqplot.min.js")')
        .js('@Url.Content("~/Scripts/jqPlot/jqplot.highlighter.min.js")')
        .js('@Url.Content("~/Scripts/jqPlot/jqplot.dateAxisRenderer.min.js")')
        .js('@Url.Content("~/Scripts/jqPlot/jqplot.pieRenderer.min.js")')
        .js('@Url.Content("~/Scripts/jqPlot/jqplot.donutRenderer.min.js")')
        .js('@Url.Content("~/Scripts/jqPlot/jqplot.cursor.min.js")');
    </script>
}

编辑2

哦!我忘了提到每次调用一些javascript功能时,我都使用head(function() {})代替$(function(){})(在head.js网站上推荐它)。

编辑3

正如Zeta所说,我提供了IE控制台的打印件(来自我的图表和图形页面)。

enter image description here

因为我是巴西人,所以用葡萄牙语。但是很容易理解:它意味着&#39; jqplot&#39;是null或不是对象。像jqplot从未加载或在加载过程中遇到问题。

2 个答案:

答案 0 :(得分:2)

我决定这样做:

head.js("js/jquery-1.7.1.min.js",
 function() {
   head.js("js/script.js");
   head.js("js/script1.js");
   head.js("js/script2.js");
   head.js("js/script3.js");
});

希望有所帮助

答案 1 :(得分:1)

广泛的问题,所以我不能保证这会解决它。

但是我想大约一年前我遇到了IE8和脚本标签的问题,听起来和你的一样。

我注意到如果脚本标签没有添加所有额外内容:

型= “文本/ JavaScript的” 语言= “JavaScript的”

并且服务器没有发送 http header-&gt;内容类型:text / javascript

它不起作用。

给它一张支票,但这就是我得到的全部

相关问题