2014-10-14 8 views
0

Мы создаем окно кендо, используя следующий код (MVC Razor View):Кендо окно Закрыть Кнопка Сломанный В IE-8 только

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(); 
    } 
} 

Эта функция вызывается из кэндо сетки, используя шаблон столбца , и мы пробовали пару методов - они оба работают одинаково, ошибка в 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>"; 

Мы используем эти два блока кода в сотнях мест на сайте. В большинстве случаев он отлично работает в IE-8, и он ВСЕГДА работает в Chrome. Единственная заметная разница на страницах, где она терпит неудачу, заключается в том, что сетка со ссылкой подключена через AJAX, а на страницах, где она последовательно работает, сетка отображается Razor. Мы не можем понять, почему это было бы значительным, или почему это имеет значение только для IE-8.

Насколько я знаю, он отлично работает в новых версиях IE. Извините, мы большой банк, и мы не можем обновить IE. Я уже пытался его запретить - не произойдет.

Пытался, но не получился:

  • Создание окна в новом DIV, приложенный к телу документа с $(document.body).append("<div></div>") - работал только в Chrome, IE не будет ничего
  • Возврат фальшивого из функции открытия
  • Различные заказы на установку заголовка, центрирования и открытия (последние несколько строк)
  • «Фиксирование» строки «var $ urlpath» для строки (не будет работать в разных средах, не будет исправлять проблему в любом случае)
  • Пересмотрены различия браузеров - не смогли найти ничего существенного, но это остается открытым в качестве исследовательского пути, это явно отличается каким-то образом

Как указано в названии, проблема в том, что кнопка закрытия (кнопка х) в верхней части окна ничего не делает в IE-8. Очень редко он удаляет содержимое окна, но мы не можем воспроизвести это. Кнопка закрытия (x) есть, но она не выделяется и не щелкает. Когда это происходит, кнопки обновления и максимизации также становятся невосприимчивыми.

ответ

0

Изменение первой строки функции:

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

... сделал работу. Ранее мы использовали append для создания нового div.