0

次のコード (MVC Razor View) を使用して剣道ウィンドウを作成しています。

function openServerDetailsWindow(ServerName) {
    var serverDetailsWindow = $("#serverDetailsWindow");
    serverDetailsWindow.empty();
    serverDetailsWindow.append('@Html.Raw(String.Format("Loading Server Details...<br /><img src=\"{0}\" />", Url.Content("~/images/ajax_loader_wfred_bb0826.gif")))');

    var $urlpath = "@Url.Action("ServerDetails", "Server", new { serverName = "SERVERNAMEPLACEHOLDER", Printable = false })".replace("SERVERNAMEPLACEHOLDER", ServerName);

    if (!serverDetailsWindow.data("kendoWindow")) {
            serverDetailsWindow.kendoWindow({
                width: "1200px",
                height: "650px",
                modal: true,
                visible: false,
                title: "Application Name - Server Details-" + ServerName,
                actions: ["Refresh", "Maximize", "Close"],
                close: function (e) {
                    $(this.element).empty();
                },
                content: $urlpath
            });
    } else {
        serverDetailsWindow.data("kendoWindow").refresh({ url: $urlpath });
    }

    if (!serverDetailsWindow.data("kendoWindow")) {
        alert("Tried to open but serverDetailsWindow kendo data was not defined.");
    } else {
        //don't maximize the window! It prevents users from knowing it's a window and not a new page.
        serverDetailsWindow.data("kendoWindow").title("Application Name - Server Details - " + ServerName.toUpperCase());
        serverDetailsWindow.data("kendoWindow").center();
        serverDetailsWindow.data("kendoWindow").open();
    }
}

この関数は、列テンプレートを使用して Kendo Grid から呼び出されています。いくつかの方法を試しました。どちらも同じように動作し、IE-8 ではエラーが発生しますが、Chrome では完璧です。

Option 1
    string ServerLink = Html.ActionLink("#=SERVER_NAME#", "", "", new { onclick = "openServerDetailsWindow('#=SERVER_NAME#');return false;" }).ToHtmlString();

Option 2
    string ServerClientTemplate = "<a href=\"\\#\" onclick=\"javascript:openServerDetailsWindow('#=SERVER_NAME#');\">#=SERVER_NAME#</a>";

この 2 つのコード ブロックは、サイト内の何百もの場所で使用されています。ほとんどの場合、IE-8 で問題なく動作し、Chrome でも常に動作します。失敗したページでの唯一の注目すべき違いは、リンクを含むグリッドが AJAX を介して取り込まれることと、一貫して機能するページでは、グリッドが Razor によってレンダリングされることです。なぜそれが重要なのか、なぜ IE-8 だけが重要なのか理解できません。

私の知る限り、IE の新しいバージョンでは完全に動作します。申し訳ありませんが、私たちは大きな銀行であり、IE をアップグレードすることはできません。私はすでにそれを禁止しようとしました - 起こらないでしょう.

試してみましたが、うまくいきませんでした:

  • ドキュメント本文に追加された新しい div にウィンドウを作成する$(document.body).append("<div></div>")- Chrome でのみ機能し、IE では何も開かない
  • 関数から false を返す
  • タイトル、センタリング、オープニングの設定順序の違い (最後の数行)
  • 「var $urlpath」行を文字列に「修正」します(環境間では機能しません。とにかく問題を修正しませんでした)
  • ブラウザの違いを確認しました - 重要なものは何も見つかりませんでしたが、これは調査パスとして公開されたままです。何らかの点で明らかに異なります

タイトルにもあるように、ここでの問題はウィンドウ上部の閉じるボタン(×ボタン)がIE-8では何もしないことです。ごくまれに、ウィンドウの内容が消去されますが、それを再現することはできません。閉じる (x) ボタンはありますが、強調表示されず、クリックされません。これが発生すると、更新ボタンと最大化ボタンも応答しなくなります。

4

1 に答える 1

0

関数の最初の行を次のように変更します。

var serverDetailsWindow = $("<div></div>");

...それを機能させました。新しい div を作成するために前に追加を使用していました。

于 2014-10-20T16:17:16.227 に答える