ASP.Net MVC Ajax / InsertionMode / HTML5 / IE 8 - PullRequest
1 голос
/ 19 июля 2011

У меня странная проблема в IE 8.

Вот что мы получили.Запуск Asp.net MVC 3. Использование Ajax.beginform для публикации некоторого пакета данных.Ответ возвращает представление, содержащее HTML 5 (только тег раздела).Это прекрасно работает в браузерах, которые знают, что такое HTML 5.

@using (Ajax.BeginForm(new AjaxOptions {InsertionMode = InsertionMode.Replace, UpdateTargetId = "main" }))
{
    <section class="stackoverflow">Hello World!</section>
}

Однако в IE 8, когда HTML-код вставляется, мы получаем некоторую забавность.Изучение элемента с помощью инструментов разработчика показывает, что IE 8 самозакрывает тег раздела, а не оборачивает тег вокруг содержимого следующим образом:

<section class="stackoverflow"/>
Text - Hello World!

Мы ссылаемся на популярный файл JS HTML5 shiv, но это не кажетсяиметь какой-либо эффект после загрузки страницы.Похоже, что какой бы javascript ни делал вставку, он не распознает новый тег раздела.

Другая интересная вещь заключается в том, что когда UnobtrusiveJavaScriptEnabled ложно в web.config, он работает просто отлично.Но нам нужно включить UnobtrusiveJavaScriptEnabled по нескольким другим причинам.

Есть идеи?

1 Ответ

1 голос
/ 19 июля 2011

При отключении UnobtrusiveJavaScriptEnabled будут использоваться библиотеки Microsoft Ajax, тогда как при его включении используются библиотеки JQUery.Вот почему существует несоответствие между работой при отключении и работой при включении.JQuery не использует innerHTML при вставке элементов DOM, в то время как библиотеки MS используют.

Я нашел некоторые обходные пути, используя плагин с именем innershiv .Вот несколько ссылок: http://tomcoote.co.uk/javascript/ajax-html5-in-ie/ Невозможно выбрать дочерние элементы HTML5 в IE8 с помощью селектора jQuery

Мы также используем HTML5 shiv, о которой сообщается об этой проблеме:http://code.google.com/p/html5shiv/issues/detail?id=4

...