v2.5.2
Giriş yap

prototürk.com sayfa geçişleri

muzaffer
976 defa görüntülendi ve 3 kişi tarafından değerlendirildi

Merhaba arkadaşlar, şu anda içinde bulunduğumuz internet sitesinde sayfa geçişleri hangi metotla yapılıyor. Yotube benzeri bir sayfa geçişi var. En tepedeki loading bar gib... Nasıl yapıldığına ilişkin video vs. varsa atabilirseniz sevinirim..

Cevap yaz
Cevaplar (5)
poyraz7221
1729 gün önce

Şimdi Tayfun Hoca php ile bir kontrol yapmış sayfa gelen istek ajax (XMLHttpRequest) isteği ise sadece dom beli bir kısmını veriyor ve gelen ajaxdaki değeri
class'ı content olan divin içine yazdırıp tarayıcının pushState function ile sayfa yenilenmeden url değiştiriyor mantık bu kadar basit aşağıdaki örnekle ne dediğimi daha iyi anlarsın
<script>

function page_change(url,page){
fetch(url)
.then(res=>res.text())
.then(res=>{
    $('body').html(res)
    window.history.pushState(null,null,page);
})

}
page_change('https://prototurk.com/soru/363-javascript-sayfa-yenilenince-dizi-icerisindeki-veriler-siliniyor','deneme');
</script>

tayfunerbilen
1731 gün önce

valla yoğunum dostlar ama bu iki konuda da yakın zamanda video çekeceğim söz :) bu sayfa geçişleri için kullandğım fonksiyon şöyle bir şey;

function request(url, container, elem, menu, end, hide, hist) {
    NProgress.start();
    $.ajax({
        url: SITE_URL + url,
        beforeSend: function (request) {
            if (hide) {
                request.setRequestHeader("hide", hide);
                if (hist) request.setRequestHeader("history", true);
            }
        },
        success: function (response) {
            if (elem) {
                if ($(elem).data('remove')) {
                    $($(elem).data('remove')).removeClass('active');
                }
            }
            if (elem && menu) {
                $(menu).removeClass('active').filter(elem).addClass('active');
            }
            $(container).html(response);
            reloadAjaxElements();
            if (hist) {
                $('a[href="' + SITE_URL + url + '"]').closest('ul').find('li').removeClass('active');
                $('a[href="' + SITE_URL + url + '"]').parent('li').addClass('active');
            }
            Prism.highlightAll();
            if (end !== true) {
                var data = url + '||' + container;
                if (hide) data += '||' + hide;
                history.pushState(data, null, SITE_URL + url);
            }
            $('.popup').remove();
            $('.full-container').removeClass('passive');
            NProgress.done();
        }
    });
}

bunu derste daha net açıklayacağım yine de fikir olması adına :)

sekiiiiiiiiz
1732 gün önce

@redline hocamız yoğun sanırım görse bence kesin cevaplar :)

redline
1732 gün önce

@sekiiiiiiiiz Tayfun hocam bu konuyla ilgili uzmancevap'da çok güzel bir bildirim sistemi kullandığını ve bununla ilgili video çekeceğini söylemişti. :D

sekiiiiiiiiz
1733 gün önce

ve bildirim sistemi :)