Vaclav Kotesovec
Vaclav Kotesovec

Reputation: 1

Load javascript only once, even after reloading page

I have a wordpress page and I need to edit my JS function to load only one, even if I click to reload page or go to another post. Is it possible to avoid rerun of function with page reloading?

function showAd(){
        var adShownTel = false;
        jQuery(window).scroll(function() {
            var currentScroll = jQuery(window).scrollTop();
            if (currentScroll > 1600 && !adShownTel) {    
                var screenWidth = jQuery( document ).width();
                    adShownTel = true;
                    var $bannTel = jQuery("<div>", {id: "sticky_banner_tel_UTM", "class":"sticky_banner_tel_UTM"});
                    if(sssp.displaySeznamAds()) {
                        if(screenWidth < 737){
                        $bannTel.append('<div style="display:inline-block;"><div id="ssp-zone-97408"></div><script>sssp.getAds([{"zoneId": 97408, "id": "ssp-zone-97408","width": 320,"height": 100}]);</script></div>');
                    }
                    var $bannElClose = jQuery("<div>", {id: "sticky_banner_close", "class": "sticky_banner_close"});
                    $bannElClose.append('<span>Zavřít reklamu</span>');
                    $bannElClose.click(function(){
                        if(screenWidth < 737){
                            $bannTel.slideToggle("slow");
                        }
                    });
                        if(screenWidth < 737){
                            $bannTel.append($bannElClose);
                            jQuery('body').append($bannTel);
                        }
                }
            }
        });
    }
    jQuery(document).ready(function(){  
        showAd();
    });

Upvotes: 0

Views: 83

Answers (2)

Mohrn
Mohrn

Reputation: 816

You could use a cookie or local storage. Something like this:

function showAd(){
        ...
        adShownTel = true;
        window.localStorage.setItem('adShownTel', true)
        ...
}

jQuery(document).ready(function(){  
        if (Boolean(window.localStorage.getItem('adShownTel'))) {
                showAd();
        }
});

But if you're not comfortable with these things then maybe it would be better to try to find a library rather than implementing this functionality yourself.

Good luck!

Upvotes: 0

Instant Raptors
Instant Raptors

Reputation: 21

This may be a job for a cookie :} This obligatory tutorialpoint link may be able to help you out try something like:

function showAd(){
    **if(!document.cookie){**
        var adShownTel = false;
        **document.cookie = "visited";**
        jQuery(window).scroll(function() {
            var currentScroll = jQuery(window).scrollTop();
            if (currentScroll > 1600 && !adShownTel) {    
                var screenWidth = jQuery( document ).width();
                    adShownTel = true;
                    var $bannTel = jQuery("<div>", {id: "sticky_banner_tel_UTM", "class":"sticky_banner_tel_UTM"});
                    if(sssp.displaySeznamAds()) {
                        if(screenWidth < 737){
                        $bannTel.append('<div style="display:inline-block;"><div id="ssp-zone-97408"></div><script>sssp.getAds([{"zoneId": 97408, "id": "ssp-zone-97408","width": 320,"height": 100}]);</script></div>');
                    }
                    var $bannElClose = jQuery("<div>", {id: "sticky_banner_close", "class": "sticky_banner_close"});
                    $bannElClose.append('<span>Zavřít reklamu</span>');
                    $bannElClose.click(function(){
                        if(screenWidth < 737){
                            $bannTel.slideToggle("slow");
                        }
                    });
                        if(screenWidth < 737){
                            $bannTel.append($bannElClose);
                            jQuery('body').append($bannTel);
                        }
                }
            }
        });
    }
    }
    jQuery(document).ready(function(){  
        showAd();
    });

Hope this helps :)

Upvotes: 1

Related Questions