0

我正在使用 jQuery BlockUI 打开一个新网页,由于使用以下 javascript 进行大量数据库查询,该网页需要一些时间:

function productSheet(url2) {
       $.blockUI.defaults.overlayCSS = {};
        $.blockUI({ });
        $.ajax({
            url: url2,
            success: function (respones) {
                var win = window.open();
                with (win.document) {
                    open();
                    write(respones);
                    close();
                }
            }
        });
    };

在新页面上,我得到了一些 jQuery JavaScript 和对外部 jQuery 脚本的引用。但是,当我在 JavaScript 之后渲染页面时,我的脚本会抛出错误:“$ undefined”。我可以刷新页面,一切都开始工作了,我没有收到任何脚本错误。

仅当我在 IE 9 中调试时才会出现此问题,在 Firefox 上一切正常(没有 JavaScript 错误并且脚本有效)。

有谁知道问题可能是什么?

编辑:

页面 iam 呈现是 MVC 3 视图。因此,上面的脚本转到返回此视图的 MVC 操作:

@model WebApplication.Controllers.ProductSheetModel
<!DOCTYPE html>
<html>
<head>

<title>Sheet - @Model.ArticleMain.ArticleMain.T0018_BENAM</title>

    <script src="../../js/jquery-1.3.2-vsdoc2.js" type="text/javascript"></script>
    <link href="../../css/ProductSheet.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="wrapper">
    @if (Model.IsPDFExport == false)
    { 
        @Html.DisplayFor(model => model.ArticleMain, "ProductSheetHeader")
    }
    ... some more partical views...
</div>
</body>
</html>
<script type="text/javascript">
$(document).ready(function () {
    var tabelheight1 = $("#divNutritiveValues").height();
    var tabelheight2 = $("#divMarking").height();
    if (tabelheight1 > tabelheight2) {
        $("#divMarking").css("height", tabelheight1 + "px");
        $("#divNutritiveValues").css("height", tabelheight1 + "px");
    }
    if (tabelheight2 > tabelheight1) {
        $("#divNutritiveValues").css("height", tabelheight2 + "px");
        $("#divMarking").css("height", tabelheight2 + "px");
    }

    var tableheightStore = $("#divStore").height();
    var tableheightCooking = $("#divCooking").height();
    if (tableheightCooking > tableheightStore) {
        $("#divCooking").css("height", tableheightCooking + "px");
        $("#divStore").css("height", tableheightCooking + "px");
    }
    if (tableheightStore > tableheightCooking) {
        $("#divCooking").css("height", tableheightStore + "px");
        $("#divStore").css("height", tableheightStore + "px");
    }

    var tableInfoProvid = $("#divInformationProvider").height();
    var tableManufac = $("#divManufacturer").height()
    if (tableInfoProvid > tableManufac) {
        $("#divManufacturer").css("height", tableInfoProvid + "px");
        $("#divInformationProvider").css("height", tableInfoProvid + "px");
    }
    if (tableManufac > tableInfoProvid) {
        $("#divInformationProvider").css("height", tableManufac + "px");
        $("#divManufacturer").css("height", tableManufac + "px");
    }
});

4

3 回答 3

0

问题是 $ 在您的 IE 页面上未定义。

通常,jQuery 将 $ 设置为对jQuery对象的引用。请参阅文档

出于某种原因,$ 引用被删除或没有在 IE 上发生。您可以发布更多代码吗?

一种解决方法是使用jQuery而不是$

但是最好更好地了解 IE 上实际发生的情况。

于 2012-05-22T12:50:48.263 回答
0

我相信这是因为您的 AJAX 帖子没有发生您的 JavaScript 注册,这意味着它们会丢失并且不会重新注册。

这是使用 AJAX 时的常见问题,本文完美地解释了它并提供了您所需要的。

于 2012-05-23T09:35:35.427 回答
0

我想出了一个解决方案,并想与您分享。在我的站点中,我创建了一个脚本来检查 jquery 是否未定义。

if (typeof jQuery == 'undefined') {
      window.location.reload();
 }

在我再次重新加载页面后,我的所有脚本都可以正常工作,也许不是最好的解决方案,但它可以工作,所以我很高兴。

于 2012-05-31T06:15:26.523 回答