Internet Explorer 9 не правильно отображает ячейки таблицы
Мой сайт всегда работал гладко с IE8, IE7, FF, Chrome и Safari. Теперь я тестирую его на IE9, и у меня возникает странная проблема: на некоторых страницах некоторые табличные данные отображаются неправильно.
Источник HTML является правильным и все, и строка, задающая проблему, изменяется каждый раз, когда я обновляю страницу (честно говоря, сама проблема появляется только при некотором обновлении, а не во всех).
- Центрирование div вертикально и горизонтально с помощью jQuery
- jQuery переопределить отображение сообщения об ошибке проверки по умолчанию (Css) Всплывающее / всплывающее окно
- Проверьте, выбраны ли все флажки
- Как сделать Jqgrid замороженный столбец
- Как проверить, загружен ли плагин jQuery?
Используя инструмент F12 для IE, структура таблицы выглядит правильно, не должно быть пустого TD после TD, содержащего M08000007448, но все же он делает это следующим образом.
Более того, если я использую инструмент F12, с инструментом «select element by click» на панели инструментов, и я пытаюсь щелкнуть пустое пространство между M08000007448 и 19, он выбирает TR, а не «скрытый td».
У меня эта проблема с представлением таблицы также в какой-то другой таблице приложения, кто-нибудь испытывает что-то вроде этого? Это происходит только в IE9 🙁
Я не знаю, важно ли это, но страница сделана с помощью ASPNET (webforms) и используется JQuery и другой JS-плагин.
Я попытался сохранить страницу (с изображениями) и открыть ее локально с помощью IE9, но проблема никогда не возникает. (Конечно, я проверил всю структуру таблицы, и все в порядке. Заголовок и все строки имеют одинаковое количество TD, с нужным количеством colspan, когда это необходимо).
- Использование jQuery .live с событием toggle
- Обрезка IE8 и JQuery ()
- Uncaught TypeError: Object не имеет метода 'on'
- jQuery ajax успешная анонимная функциональная область
- Использование .text () для извлечения только текста, не вложенного в дочерние tags
- Выберите элемент, когда имя classа начинается с определенного слова
- Как использовать jQuery для события click в веб-приложении iPhone
- jQuery draggable показывает помощника в неправильном месте после прокрутки страницы
У меня точно такая же проблема. вы можете прочитать этот 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
- Существует ли межсегментный авторезистор высоты iframe, который работает?
- Объекты Value vs Entity (Domain Driven Design)
Interesting Posts
URL-адрес хеша сохраняется между переадресацией
Android Как нарисовать гладкую линию после пальца
Новый GPU жужжит, разогревает и не выключит вентиляторы (ON IDLE)
Как я могу войти в систему на свой компьютер, не зная его пароль?
Как компьютер загружается даже после отказа батареи CMOS?
Несколько операционных систем или загрузчик ISO для USB-накопителя?
Возможно ли, что маршрутизатор «сойдет с ума» со временем?
Аргументы подпрограммы Perl
Клиент электронной почты для Windows
UIScrollView не использует ограничения автоопределения
Отключить гиперпоточность в реестре Windows 7
Что такое MVC (Model View Controller)?
ggplot2: фигурные скобки на оси?
Как удалить запись контекстного меню «3D-печать с помощью 3D Builder» в Windows 10?
Размер шрифта android для вкладок
Давайте будем гением компьютера.