https://jqueryui.com/tabs/#default
Oto jej układ:
<div id="tabs"> <table class="tablica_X"> <tbody> <div id="tabs-1"> <table class="pol"> <tbody> ... </tbody> </table> <table class="pol"> <tbody> ... </tbody> </table> </div> <div id="tabs-2"> <table class="pol"> <tbody> ... </tbody> </table> <table class="pol"> <tbody> ... </tbody> </table> <div id="tabs-9"> <table class="pol"> <tbody> ... </tbody> </table> </div> ... <table class="pol"> <tbody> ... </tbody> </table> </div> </tr> </tr> </tbody> </table> </div> </tr> </tr> </tbody> </table> </div>
Do tego skrypty:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js" integrity="sha256-VazP97ZCwtekAsvgPBSUwPFKdrwD3unUfSGVYrahUqU=" crossorigin="anonymous"></script> <script> $( function() { $( "#tabs" ).tabs(); } ); </script>
plus skrypt do otwierania poszczególnych stron z hotelami:
<script> <!-- onload=function(){ for(i=0;d=document.getElementsByTagName('a')[i++];){ if (d.href.match(/.*hotel\d+\.html/)){ d.onclick=function(){window.open(this.href,'a','width=740px, height=750px, resizable=yes, scrollbars=yes, left=20px, top=20px');return false} } } } //--> </script>
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?