HTML include

2022. 5. 3. 16:59Study/Publishing

HTML, CSS 파일로만 작업된 페이지에서 include를 하는 방법

HTML에는 include 기능이 없지만 JavaScript AJAX를 이용하여 인클루드를 할 수 있다.

 

 

HTML

<div data-include-path="footer.html"></div>

 

JS

window.addEventListener('load', function() {
    var allElements = document.getElementsByTagName('*');
    Array.prototype.forEach.call(allElements, function(el) {
        var includePath = el.dataset.includePath;
        if (includePath) {
            var xhttp = new XMLHttpRequest();
            xhttp.onreadystatechange = function () {
                if (this.readyState == 4 && this.status == 200) {
                    el.outerHTML = this.responseText;
                }
            };
            xhttp.open('GET', includePath, true);
            xhttp.send();
        }
    });
});

 

var allElements = document.getElementsByTagName('*');

모든 엘리먼트를 찾는다.

 

var inCludePath = el.dataset.inCludePath;

allElements 중 data-include-path의 속성이 붙은 엘리먼트를 찾는다.

 

if(inCludePath){

data-include-path 속성값이 있다면

 

var xhttp = new XMLHttpRequest();

서버에 요청하여 데이터를 받아온다.

 

if(this.readyState == 4 && this.state == 200){

데이터를 정상적으로 받아왔다면

 

el.outerHTML = this.responseText;

outHTML에 데이터를 넣는다.

 

 

 


페이지타이틀 변경

인클루드 하면서 페이지 타이틀도 변경

 

HTML

<div class="layout__router" data-include-path="../header.html" data-include-title="PIN 충전/환불"></div>

 

JS

/* layout rounter */
window.addEventListener('load', function() {
    // let allElements = document.getElementsByTagName('*');
    let allElements = document.querySelectorAll(".layout__router");
    Array.prototype.forEach.call(allElements, function(el) {
        let includePath = el.dataset.includePath;
        let includeTitle = el.dataset.includeTitle;
        if (includePath) {
            let xhttp = new XMLHttpRequest();
            xhttp.onreadystatechange = function () {
                if (this.readyState == 4 && this.status == 200) {
                    el.outerHTML = this.responseText;
                    document.querySelector('.page-title').innerText = includeTitle;
                }
            };
            xhttp.open('GET', includePath, true);
            xhttp.send();
        }

    });
});

 

 

 

 

 

 


 

참고:)

https://kyung-a.tistory.com/18

 

일반 HTML 파일에 HTML include/imports 하는 방법

프론트엔드 개발자가 아닌 마크업을 위주로 하는 웹퍼블리셔들은 대부분 일반 html, css 파일로 작업을하게 됩니다 페이지가 많아지다보면 중복되는 내용이 많아지죠? 특히 header와 footer는 거의

kyung-a.tistory.com

 

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

 

How To Include HTML

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com