Internet Explorer 9 не правильно отображает ячейки таблицы

Мой сайт всегда работал гладко с IE8, IE7, FF, Chrome и Safari. Теперь я тестирую его на IE9, и у меня возникает странная проблема: на некоторых страницах некоторые табличные данные отображаются неправильно.

Источник HTML является правильным и все, и строка, задающая проблему, изменяется каждый раз, когда я обновляю страницу (честно говоря, сама проблема появляется только при некотором обновлении, а не во всех).

Используя инструмент F12 для IE, структура таблицы выглядит правильно, не должно быть пустого TD после TD, содержащего M08000007448, но все же он делает это следующим образом.

Более того, если я использую инструмент F12, с инструментом «select element by click» на панели инструментов, и я пытаюсь щелкнуть пустое пространство между M08000007448 и 19, он выбирает TR, а не «скрытый td».

У меня эта проблема с представлением таблицы также в какой-то другой таблице приложения, кто-нибудь испытывает что-то вроде этого? Это происходит только в IE9 🙁

Я не знаю, важно ли это, но страница сделана с помощью ASPNET (webforms) и используется JQuery и другой JS-плагин.

Я попытался сохранить страницу (с изображениями) и открыть ее локально с помощью IE9, но проблема никогда не возникает. (Конечно, я проверил всю структуру таблицы, и все в порядке. Заголовок и все строки имеют одинаковое количество TD, с нужным количеством colspan, когда это необходимо).

введите описание изображения здесь У меня точно такая же проблема. вы можете прочитать этот https://connect.microsoft.com/IE/feedback/details/649949/innerhtml-formatting-issues-on-very-large-tables

Вы можете удалить пространство между td, используя javascript, если ваш html будет возвращен из ajax, затем из ответа вы замените его

response_html = response_html.replace(/td>\s+ 

У меня была такая же точная проблема, заполняющая таблицу с использованием шаблонов jquery. Я продолжал иметь «призрак»

на больших наборах данных (300+) только в IE9. Эти

‘будут вытеснять внешние столбцы вне границ моей таблицы.

Я исправил это, сделав что-то действительно глупое; удалив все пробелы между тегами

start и end и оставив выравнивание разметки HTML, относящейся к моей таблице. В принципе, вы хотите, чтобы все ваши

в одной строке, без пробелов.

Пример:

 
${primary} ${secondary} ${phone} ${address}

Решение, данное @Shanison, помогает только частично, но проблема сохраняется, если между любыми другими элементами, которые могут быть частью модели содержимого таблицы, такими как thead, th и т. Д.

Вот лучшее регулярное выражение, разработанное моим Ведущим на работе.

 if (jQuery.browser.msie && jQuery.browser.version === '9.0') { data = data.replace(/>\s+(?=<\/?(t|c)[hardfob])/gm,'>'); } 

охватывая все таблицы, заголовки, colgroup, col, tbody, thead, tfoot, tr, td, th.

Примечание: jQuery.browser был удален в jQuery 1.9 и доступен только через плагин jQuery.migrate. Вместо этого попробуйте использовать функцию обнаружения.

Я исправил эту проблему, удалив пробелы:

 var expr = new RegExp('>[ \t\r\n\v\f]*<', 'g'); var response_html_fixed = data.replace(expr, '><'); //A disgusting hack for ie9. Removes space between open and close  tags $('#treegrid-data').replaceWith(response_html_fixed); 

В IE Blog упоминается новый инструмент, который сегодня называется скриптом Inspector, чтобы помочь устранить несовместимость IE9. Это может помочь устранить проблему.

http://blogs.msdn.com/b/ie/archive/2011/04/27/ie9-compat-inspector.aspx

У меня тоже была эта проблема.

Это произошло со мной, что атрибут width в td / th тегах вызывает эту проблему.

Изменен его стиль = “width: XXpx” и проблема решена 🙂

Я столкнулся с этой проблемой, и я понял, что это произошло, когда я прямо помещал текст в элементы

. Я не уверен, является ли это стандартом или нет, но после переноса любого текста в элементы проблемы с обработкой исчезли.

Поэтому вместо:

 gibberish 

пытаться:

 gibberish 

Нашел очень полезный скрипт для предотвращения нежелательных ячеек в таблице html при рендеринге.

 function removeWhiteSpaces() { $('#myTable').html(function(i, el) { return el.replace(/>\s*<'); }); } 

Эта функция javascript, которую вы должны вызывать, когда загружается страница (то есть событие onload)

Поздний ответ, но, надеюсь, я могу помочь кому-то с этим. У меня возникла такая же проблема при отладке в IE9. Решение удаляло все пробелы в HTML-коде. Вместо

... ...

Я должен был сделать

 ...... 

Это, казалось, решило проблему!

Это очень серьезная ошибка в IE9. В моем случае удаление пробелов между разными td было недостаточным, поэтому я также удалил пробелы между разными tr. И он работает нормально.

У меня была аналогичная проблема с ie-9 при рендеринге динамической таблицы.

 var table = $('
');

когда rendered переводит на …

 

это отлично работает в то есть = 10 хром safari …

  // but for ie-8 it renders to... with a style attr in my case 

вам нужно написать 100px вместо 100 .

Имея такую ​​же проблему форматирования с ie9, и новую проблему в ie11, где она правильно форматируется, но занимает 25-40 секунд, чтобы отобразить таблицу из примерно 400 строк и 9 столбцов. Он имеет ту же самую причину, пробел внутри тегов tr или td.

Я показываю таблицу, которая создается путем рендеринга частичного представления из вызова AJAX. Я решил использовать BFH на сервере, удалив пробел из частичного представления, используя метод, опубликованный здесь: http://optimizeasp.net/remove-whitespace-from-html

Это его решение, скопированное into toto:

  private static readonly Regex RegexBetweenTags = new Regex(@">(?! )\s+", RegexOptions.Compiled); private static readonly Regex RegexLineBreaks = new Regex(@"([\n\s])+?(?<= {2,})<", RegexOptions.Compiled); private static string RemoveWhitespaceFromHtml(string html) { html = RegexBetweenTags.Replace(html, ">"); html = RegexLineBreaks.Replace(html, "<"); return html.Trim(); } 

И вот метод, который возвращает частичное представление как строку, украденную из другого ответа SO:

 public string RenderPartialViewToString(string viewName, object model) { this.ViewData.Model = model; try { using (StringWriter sw = new StringWriter()) { ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(this.ControllerContext, viewName); ViewContext viewContext = new ViewContext(this.ControllerContext, viewResult.View, this.ViewData, this.TempData, sw); viewResult.View.Render(viewContext, sw); return RemoveWhitespaceFromHtml(sw.ToString()); } } catch (Exception ex) { //logger here } } 

Это занимает немного времени, но менее секунды, чтобы отобразить таблицу из 400 строк, что для моих целей достаточно хорошо.

У меня была эта проблема иногда на таблицах, созданных нокаутом. В моем случае я исправил его с помощью решения jQuery, найденного здесь.

 jQuery.fn.htmlClean = function() { this.contents().filter(function() { if (this.nodeType != 3) { $(this).htmlClean(); return false; } else { this.textContent = $.trim(this.textContent); return !/\S/.test(this.nodeValue); } }).remove(); return this; } 

У меня была такая же проблема с сетью KendoUI в IE10. Я смог заставить IE перезагрузить отсутствующие ячейки таблицы с помощью этого взлома:

 htmlTableElement.appendChild(document.createTextNode('')); 

Добавление пустого textNode заставляет IE перезаписывать всю таблицу.

  • Получение jQuery для распознавания .change () в IE
  • Может ли кто-нибудь объяснить, что такое JSONP, в условиях неспециалиста?
  • Перезагружать данные диаграммы через JSON с помощью Highcharts
  • jsonp с jquery
  • Нажмите кнопку переключения с помощью jQuery
  • управление сеткой для ASP.NET MVC?
  • Номер строки таблицы и столбца в jQuery
  • прокручивайте вверх и вниз по нажатию на кнопку выбора с помощью jquery
  • JqGrid нужна гиперссылка - нужно захватить ценность через JQuery
  • связывание jquery в html
  • Оберните каждые 3 divs в div
  • Давайте будем гением компьютера.