0

次のjavascriptを使用した多くのデータベースクエリのために時間がかかる新​​しいWebページを開くためにjQuery BlockUIを使用しています:

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

私は解決策を思いついたので、あなたと共有したいと思います。私のサイトでは、jquery が未定義かどうかをチェックするスクリプトを作成しました。

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

ページを再度リロードした後、すべてのスクリプトが機能します。最善の解決策ではないかもしれませんが、機能するので満足しています。

于 2012-05-31T06:15:26.523 に答える
0

問題は、IE のページで $ が定義されていないことです。

通常、jQuery は $ をjQueryオブジェクトへの参照として設定します。ドキュメントを参照してください

何らかの理由で、$ 参照が削除されているか、IE で発生していません。あなたのコードをもっと投稿できますか?

1 つの回避策は、jQuery代わりに使用することです。$

しかし、IE で実際に何が起こっているのかをよりよく理解することは良いことです。

于 2012-05-22T12:50:48.263 に答える