2

I have an all HTML/CSS website being hosted by Github Pages (which appears to only support "static pages"?). How can I include the HTML of my master HTML page (header and footer) into another HTML page? I would be open to using HTML, Javascript, Jquery, etc to accomplish this (as long as my pages would still qualify as "static"). Thank you for the help.

Ryan
  • 103
  • 1
  • 1
  • 6
  • Would you consider to use ` – Chaska Jul 27 '18 at 03:02
  • Sounds like a JavaScript SPA framework would be the way to go. I recommend Aurelia or React. The result will be very static in the sense of content. Just a few JS files, but the site will be as dynamic as you like – Aluan Haddad Jul 27 '18 at 03:04
  • Possible duplicate of [Including external HTML file to another HTML file](https://stackoverflow.com/questions/17148357/including-external-html-file-to-another-html-file) – Dinesh Ghule Jul 27 '18 at 03:10

1 Answers1

2

Include the HTML

Including HTML is done by using a include-html attribute:

<div include-html="content.html"></div>

Add the JavaScript

HTML includes are done by JavaScript.

<script>
function includeHTML() {
  var z, i, elmnt, file, xhttp;
  /*loop through a collection of all HTML elements:*/
  z = document.getElementsByTagName("*");
  for (i = 0; i < z.length; i++) {
    elmnt = z[i];
    /*search for elements with a certain atrribute:*/
    file = elmnt.getAttribute("include-html");
    if (file) {
      /*make an HTTP request using the attribute value as the file name:*/
      xhttp = new XMLHttpRequest();
      xhttp.onreadystatechange = function() {
        if (this.readyState == 4) {
          if (this.status == 200) {elmnt.innerHTML = this.responseText;}
          if (this.status == 404) {elmnt.innerHTML = "Page not found.";}
          /*remove the attribute, and call this function once more:*/
          elmnt.removeAttribute("include-html");
          includeHTML();
        }
      } 
      xhttp.open("GET", file, true);
      xhttp.send();
      /*exit the function:*/
      return;
    }
  }
}
</script>

Call includeHTML() at the bottom of the page:

<script>
includeHTML();
</script>

Ref: https://www.w3schools.com/howto/howto_html_include.asp

Dinesh Ghule
  • 3,423
  • 4
  • 19
  • 39