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 27.09.2021, 19:55:53
Post #21





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

Posty w temacie


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

 



RSS Wersja Lo-Fi Aktualny czas: 19.05.2024 - 08:52