Links

← разместить еще код

Расшаренный код:

import {ajaxGETRender} from './ajax.js';
import {metaTags, titleTag} from './meta.js';

export function link() {

    function handlerClick(event) {
        event.path.forEach(function(item, i, arr){
            if(item.tagName == 'A'){
                let url = event.path[i].attributes.href.value;
                // console.log(event.path[i].attributes.href.value);

                if(regEx.exec(url)=== null)
                {
                    event.preventDefault();
                    ajaxGETRender(event.path[i].attributes.href.value, function(data){
                        document.getElementById('content').innerHTML = data.html;
                        history.pushState(data.html, null, url);
                        metaTags('description', data.description);
                        titleTag(data.title);
                        link();

                    });

                }
            }
        });
    }

    // window.onpopstate = function(event) {
    //     console.log(event.target.location.pathname);
    //     ajaxGETRender(event.target.location.pathname, function(data){
    //         document.getElementById('content').innerHTML = data.html;
    //         // history.pushState(data.html, null, event.target.location.pathname);
    //         metaTags('description', data.description);
    //         titleTag(data.title);
    //         link();
    //
    //     });
    // };

    const a = document.getElementsByTagName('a'),
        regEx = /^(http|\/{2}|\w)/m;


    if(typeof a == "object")
    {
        for(var i = 0; a.length>i;i++)
        {
            if(typeof a[i] !== "undefined"){
                console.log('a');

                a[i].removeEventListener('click', handlerClick);

                a[i].addEventListener('click', handlerClick);

            }

        }
    }
    
}