Moja witryna zawsze działała bezproblemowo z przeglądarkami IE8, IE7, FF, Chrome i Safari. Teraz testuję to w IE9 i mam dziwny problem: na niektórych stronach niektóre dane tabelaryczne renderują się nieprawidłowo.
Źródło HTML jest poprawne iw ogóle, a wiersz podający problem zmienia się za każdym razem, gdy odświeżam stronę (prawdę mówiąc, sam problem pojawia się tylko przy pewnym odświeżeniu, nie we wszystkich).
Używając narzędzia F12 w IE, struktura tabeli wydaje się być poprawna, nie powinno być pustego TD po TD zawierającym M08000007448, ale nadal renderuje się w ten sposób.
Ponadto, jeśli używam narzędzia F12 z narzędziem „wybierz element kliknięciem” na pasku narzędzi i spróbuję kliknąć puste miejsce między M08000007448 a 19, wybierze TR, a nie „ukryte td”.
Mam ten problem z renderowaniem tabeli również w innej tabeli w aplikacji, czy ktoś ma coś takiego? Dzieje się tak tylko w IE9 :(
Nie wiem, czy to ważne, ale strona jest tworzona za pomocą ASPNET (formularzy internetowych) i używam Jquery oraz innej wtyczki JS.
Próbowałem zapisać stronę (z obrazami) i otworzyć ją lokalnie za pomocą IE9, ale problem nigdy nie występuje. (Oczywiście sprawdziłem całą strukturę tabeli i jest ok. Nagłówek i wszystkie wiersze mają taką samą liczbę TD, z odpowiednią liczbą colspanów, jeśli to konieczne).
Odpowiedzi:
Ja też mam dokładnie ten sam problem. możesz przeczytać to https://connect.microsoft.com/IE/feedback/details/649949/innerhtml-formatting-issues-on-very-large-tables
Możesz usunąć spację między td za pomocą javascript, jeśli twój kod HTML jest zwracany z ajax, a następnie z odpowiedzi zamień go na
źródło
Miałem dokładnie ten sam problem z zapełnianiem tabeli przy użyciu szablonów jQuery. Ciągle miałem "duchy"
<td>
na większych zbiorach danych (300+) tylko w IE9. To<td>
wypchnęłoby zewnętrzne kolumny poza granice mojego stołu.Naprawiłem to, robiąc coś naprawdę głupiego; usunięcie wszystkich spacji między
<td>
znacznikami początkowymi i końcowymi i wyjustowanie znaczników HTML odnoszących się do mojej tabeli. Zasadniczo chcesz, aby wszystkie były<td>
</td>
w tej samej linii, bez spacji.Przykład:
źródło
Podane rozwiązanie @Shanison pomaga tylko częściowo, ale problem będzie się powtarzał, jeśli między innymi elementami, które mogą być częścią modelu zawartości tabeli, takimi jak thead, th itp., Są spacje.
Oto lepsze wyrażenie regularne opracowane przez mojego lidera w pracy.
obejmujące wszystkie elementy table, caption, colgroup, col, tbody, thead, tfoot, tr, td, th.
Uwaga: jQuery.browser został usunięty w jQuery 1.9 i jest dostępny tylko poprzez wtyczkę jQuery.migrate. Spróbuj zamiast tego użyć wykrywania funkcji.
źródło
Rozwiązałem ten problem, usuwając spacje:
źródło
Blog IE wspomina o nowym narzędziu o nazwie skrypt Compat Inspector, które pomaga w rozwiązywaniu problemów z niekompatybilnością renderowania w IE 9. Może to pomóc w rozwiązaniu problemu.
http://blogs.msdn.com/b/ie/archive/2011/04/27/ie9-compat-inspector.aspx
źródło
Ja też miałem ten problem.
Okazało się, że ten atrybut szerokości w znacznikach td / th powoduje ten problem.
Zmieniono to na style = "width: XXpx" i problem został rozwiązany :)
źródło
Natknąłem się również na ten problem i zdałem sobie sprawę, że stało się to, gdy bezpośrednio wstawiałem tekst do
<td>
elementów. Nie jestem pewien, czy jest to standard, czy nie, ale po zawinięciu dowolnego tekstu w<span>
elementy zniknęły problemy z renderowaniem.Więc zamiast:
próbować:
źródło
Znalazłem bardzo przydatny skrypt, który zapobiega niechcianym komórkom w tabeli html podczas renderowania.
Tę funkcję javascript, którą należy wywołać podczas ładowania strony (np. Zdarzenie onload)
źródło
Późna odpowiedź, ale mam nadzieję, że mogę komuś w tym pomóc. Doświadczyłem tego samego problemu podczas debugowania w IE9. Rozwiązaniem było usunięcie wszystkich białych znaków w kodzie HTML. Zamiast
<tr> <td>...</td> <td>...</td> </tr>
musiałem zrobić
Wydawało się, że to rozwiązało problem!
źródło
To jest bardzo poważny błąd w IE9. W moim przypadku usunięcie tylko białych spacji między różnymi td nie było wystarczające, więc usunąłem również spacje między różnymi tr. I działa dobrze.
źródło
Miałem podobny problem z ie-9 podczas renderowania tabeli dynamicznej.
po renderowaniu przekłada się na ...
działa to idealnie dobrze w ie = 10 chrome safari ...
musisz pisać
100px
zamiast100
.źródło
Ten sam problem z formatowaniem w ie9 i nowy problem w ie11, gdzie formatuje się poprawnie, ale renderowanie tabeli zawierającej około 400 wierszy i 9 kolumn zajmuje 25-40 sekund. Ma tę samą przyczynę, białą spację wewnątrz znaczników tr lub td.
Wyświetlam tabelę utworzoną przez renderowanie częściowego widoku z wywołania AJAX. Zdecydowałem się na BFH to na serwerze, usuwając białe znaki z renderowanego częściowego widoku, używając metody zamieszczonej tutaj: http://optimizeasp.net/remove-whitespace-from-html
Oto jego rozwiązanie skopiowane in-toto:
A oto metoda, która zwraca częściowy widok jako ciąg, skradziony z innej SO odpowiedzi:
Wyrenderowanie tabeli zawierającej około 400 wierszy zajmuje trochę czasu, ale mniej niż sekundę, co jest wystarczające do moich celów.
źródło
Czasami miałem ten problem na tabelach generowanych przez Knockout. W moim przypadku naprawiłem to za pomocą rozwiązania jQuery znalezionego tutaj
źródło
Miałem ten sam problem z siatką KendoUI w IE10. Udało mi się zmusić IE do ponownego zwrócenia brakujących komórek tabeli za pomocą tego hacka:
Dołączenie pustego textNode powoduje, że IE ponownie wyrenderuje całą tabelę.
źródło