Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak zmniejszyć rozmiar DOM ładując tylko pierwszą stronę tabeli ?, Jak ładować pierwszą stronę tabeli, a pozostałe po kolejnym kliknięciu
Blasius
post
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 1.09.2021

Ostrzeżenie: (0%)
-----


Posiadam stronę z prawie 2000 elementami DOM (węzłów), na której znajduje się między innymi prosta tabela napisana za pomocą jQuery z ponad 300 linkami do innych podstron (wzorowana na:)
https://jqueryui.com/tabs/#default
Oto jej układ:
  1. <div id="tabs">
  2. <ul><li><a href="#tabs-1" >Al-Ar</a></li>
  3. <li><a href="#tabs-2" >Ar-D</a></li>
  4. <li><a href="#tabs-3" >E-Ha</a></li>
  5. <li><a href="#tabs-4" >Ha-J</a></li>
  6. <li><a href="#tabs-5" >K-Mo</a></li>
  7. <li><a href="#tabs-6" >Mo-Ro</a></li>
  8. <li><a href="#tabs-7" >Ro-So</a></li>
  9. <li><a href="#tabs-8" >So-Su</a></li>
  10. <li><a href="#tabs-9" >Su-Z</a></li></ul>
  11. <table class="tablica_X">
  12. <tr class="tr1"><td></td></tr>
  13. <tr class="tr"><td>
  14. <div id="tabs-1">
  15. <table class="pol">
  16. <tr> <td class="td10" colspan="4">Al..Ar</td></tr>
  17. <tr> <td class="td1"><a href="hotel1.html">hotel 1</a></td>
  18. <td class="td2">1</td></tr>
  19. <tr> <td class="td1"><a href="hotel2.html">hotel 2</a></td>
  20. <td class="td2">2</td></tr>
  21. ...
  22. <tr> <td class="td1"><a href="hotel20.html">hotel 20</a></td>
  23. <td class="td2">20</td></tr>
  24. <table class="pol">
  25. <tr> <td class="td1"><a href="hotel21.html">hotel 21</a></td>
  26. <td class="td2">21</td></tr>
  27. ...
  28. <tr> <td class="td1"><a href="hotel30.html">hotel 30</a></td>
  29. <td class="td2">30</td></tr>
  30. </div>
  31. <div id="tabs-2">
  32. <table class="pol">
  33. <tr> <td class="td10" colspan="4">Ar...D</td></tr>
  34. <tr> <td class="td1"><a href="hotel31.html">hotel 31</a></td>
  35. <td class="td2">31</td></tr>
  36. ...
  37. <tr> <td class="td1"><a href="hotel51.html">hotel 51</a></td>
  38. <td class="td2">51</td></tr>
  39. <table class="pol">
  40. <tr> <td class="td1"><a href="hotel52.html">hotel 52</a></td>
  41. <td class="td2">52</td></tr>
  42. ...
  43. <tr> <td class="td1"><a href="hotel105.html">hotel 105</a></td>
  44. <td class="td2">105</td></tr>
  45. <div id="tabs-9">
  46. <table class="pol">
  47. <tr> <td class="td10" colspan="4">Su-Z</td></tr>
  48. <tr> <td class="td1"><a href="hotel231.html">hotel 231</a></td>
  49. <td class="td2">231</td></tr>
  50. ...
  51. <tr> <td class="td1"><a href="hotel301.html">hotel 301</a></td>
  52. <td class="td2">301</td></tr>
  53. </div>
  54. ...
  55. <table class="pol">
  56. <tr> <td class="td1"><a href="hotel302.html">hotel 302</a></td>
  57. <td class="td2">302</td></tr>
  58. ...
  59. <tr> <td class="td1"><a href="hotel355.html">hotel 355</a></td>
  60. <td class="td2">355</td></tr>
  61. </div>
  62. </tr>
  63. <tr class="tr1"><td></td>
  64. </tr>
  65. </div>
  66. </tr>
  67. <tr class="tr1"><td></td>
  68. </tr>
  69. </div>

Do tego skrypty:
[JAVASCRIPT] pobierz, plaintext
  1. <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  2. <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js" integrity="sha256-VazP97ZCwtekAsvgPBSUwPFKdrwD3unUfSGVYrahUqU=" crossorigin="anonymous"></script>
  3. <script>
  4. $( function() {
  5. $( "#tabs" ).tabs();
  6. } );
  7. </script>
[JAVASCRIPT] pobierz, plaintext

plus skrypt do otwierania poszczególnych stron z hotelami:
[JAVASCRIPT] pobierz, plaintext
  1. <script>
  2. <!--
  3. onload=function(){
  4. for(i=0;d=document.getElementsByTagName('a')[i++];){
  5. if (d.href.match(/.*hotel\d+\.html/)){
  6. d.onclick=function(){window.open(this.href,'a','width=740px, height=750px, resizable=yes, scrollbars=yes, left=20px, top=20px');return false}
  7. }
  8. }
  9. }
  10. //-->
  11. </script>
[JAVASCRIPT] pobierz, plaintext

Wszystko ładnie działa, ale podczas sprawdzania, np. w PageSpeed Insights pojawia się ostrzeżenie - "Unikaj zbyt dużego DOM - 1795 elementów".
Ponieważ na stronie startowej wyświetla się tylko tablica "#tabs-1", a pozostałe i tak trzeba później kliknąć żeby je zobaczyć, to tablice od "#tabs-2" do "#tabs-9" nie muszą się ładować od razu. I tu prośba o pomoc.
W jaki najprostszy sposób można zoptymalizować rozmiar DOM? Jak zmusić resztę kodu od #tabs-2" do nie ładowania się przy starcie?
I czy JavaScript rzeczywiście opłacalnie przyspieszy ładowanie i działanie strony? Czy sensowniej jest zostawić kod taki jak jest bez JS?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Blasius
post
Post #2





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 1.09.2021

Ostrzeżenie: (0%)
-----


Tak, wiem, ale żeby załadować kolejne tablice musi być dodany jakiś kod Java Script.
Ja zaś JS w ogóle nie znam, stąd prośba o pomoc.
Wiem, że w głównym katalogu ma być tylko pierwsza tablica - <li><a href="#tabs-1" >Al-Ar</a></li>
A cała reszta w kolejnym lub kolejnych tablicach, ale jak dodać resztę to już nie wiem.
I we wzorcu podają między innymi link do swojej strony "demos", którego ja nie dodaję do swojej strony.

Poza tym chciałbym aby zawsze nowe podstrony otwierały sięw określonej skryptem wielkości.
Go to the top of the page
+Quote Post

Posty w temacie
- Blasius   Jak zmniejszyć rozmiar DOM ładując tylko pierwszą stronę tabeli ?   27.09.2021, 19:55:53
- - viking   A po co tam tabele?   28.09.2021, 06:02:57
- - Blasius   A dlaczego nie? Po prostu taka tabelka ładnie wygl...   28.09.2021, 20:11:53
- - trueblue   Odpowiedzi są w manualu, do którego zresztą podałe...   28.09.2021, 20:40:55
- - Blasius   Tak, wiem, ale żeby załadować kolejne tablice musi...   28.09.2021, 21:42:49
- - Pyton_000   Przecież pod spodem jest " view source" ...   29.09.2021, 20:32:37
- - Blasius   Dzięki za "otworzenie oczu". Pokombinowa...   1.10.2021, 19:01:55
- - trueblue   https://www.audero.it/blog/2018/05/16/event...-in-...   1.10.2021, 19:09:30
- - Blasius   Dodałem ten skrypt: [JAVASCRIPT] pobierz, plaintex...   1.10.2021, 22:01:11
- - trueblue   #tabs To ma być selektor CSS określający, który n...   2.10.2021, 07:00:04
- - Blasius   Może zadaję banalne pytania, ale kompletnie nie zn...   2.10.2021, 18:57:12
- - trueblue   A jak komórkom w tabeli nadałeś klasę td1?   3.10.2021, 08:24:59
- - Blasius   Normalnie, w css... [CSS] pobierz, plaintext .td1...   3.10.2021, 19:18:49
- - trueblue   A nie wydaje Ci się, że klasy nadałeś w HTML?   3.10.2021, 21:26:34
- - Blasius   Nie. Są w pliku*.css Nie bardzo rozumiem pytanie....   3.10.2021, 21:56:42
- - trueblue   Jeśli uważasz, że nadałeś klasy dla tych elementów...   4.10.2021, 07:33:25
- - Blasius   Zrobiłem tak: [JAVASCRIPT] pobierz, plaintext ...   4.10.2021, 19:51:23
|- - trueblue   Cytat(Blasius @ 4.10.2021, 20:51:23 )...   5.10.2021, 06:59:14
- - Blasius   Zrobiłem tak: zmieniłem tabelę [HTML] pobierz, pla...   5.10.2021, 20:09:20
- - trueblue   Klasę powinieneś nadać elementowi <a>, przec...   6.10.2021, 10:00:15
- - Blasius   Zmieniłem [JAVASCRIPT] pobierz, plaintext if ...   6.10.2021, 21:59:49
- - viking   Classlist to taki worek na klasy (lista klas na el...   7.10.2021, 05:24:07
- - Blasius   W końcu pojąłem... Ale nie spotkałem się nigdzie ...   7.10.2021, 19:55:56
- - trueblue   Przecież kod do otwierania okna jest we wcześniejs...   7.10.2021, 20:44:06
- - Blasius   Ten? [JAVASCRIPT] pobierz, plaintext <script...   7.10.2021, 20:48:43
- - trueblue   Nie chodzi o to, abyś ten kod jako całość wkleił z...   8.10.2021, 09:19:01
- - Blasius   Poddaję się. Wierz mi, że próbowałem. kilkadziesią...   11.10.2021, 20:23:44
- - trueblue   Podałem Ci wskazówkę w poprzednim poście.   12.10.2021, 10:34:57
- - Blasius   Wymęczyłem (czytaj - znalazłem i trochę zmieniłem)...   12.10.2021, 19:06:20
- - trueblue   Nie wiem dlaczego uparcie wklejasz stary kod, skor...   13.10.2021, 08:07:53
- - Blasius   A przeczytałeś, że KOMPLETNIE NIE ZNAM JAVASCRIPT?...   14.10.2021, 21:33:26


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 10.10.2025 - 21:25