jQuery EU Cookie Law plugin
An easy-to-install jQuery plugin to create EU Cookie Law popups and for GDPR compliance.
Supports multiple layouts out of the box. Works well with Bootstrap. Easy to customize markup and CSS.
This is a demo page; the newest live demo will always be
here.
For the code, install instructions and to see how amazingly free it is,
go to Github.
Also, you might find other interesting things on my blog at
wimagguc.com.
Get started
To get started, first include jQuery and import the plugin's files:
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<link rel="stylesheet" type="text/css" href="css/jquery-eu-cookie-law-popup.css"/>
<script src="js/jquery-eu-cookie-law-popup.js"></script>
(Mind you, you need to run the code on a webserver to be able to set cookies.)
Simple popup
In its simplest form, you can add an EU Cookie Law popup by simply adding the "eupopup" classes to any HTML tag.
<body class="eupopup eupopup-top">
You can also choose from these layouts:
- Top of the page (“eupopup”, or “eupopup eupopup-top”)
- Fixed banner on top (“eupopup eupopup-fixedtop”)
- Fixed to bottom (“eupopup eupopup-bottom”)
- Fixed window, to bottom left (“eupopup eupopup-bottomleft”)
- Fixed window, bottom right (“eupopup eupopup-bottomright”)
- Inline (“eupopup eupopup-block”)
And these colours or styles:
- White text on dark background ("eupopup-color-default")
- Dark text on light background ("eupopup-color-inverse")
- Compact ("eupopup-style-compact")
Custom HTML
To use a custom HTML markup, you can either add it as a Javascript parameter (read about it later), or by adding a DIV with the classname "eupopup-markup".
<div class="eupopup eupopup-container eupopup-container-block">
<div class="eupopup-markup">
<div class="eupopup-head">This website is using cookies</div>
<div class="eupopup-body">We use cookies to ensure that we give you the best experience on our website. If you continue using the site, we\'ll assume that you are happy to receive all cookies on this website.</div>
<div class="eupopup-buttons">
<a href="#" class="eupopup-button eupopup-button_1">Continue</a>
<a href="/?cookie-policy" target="_blank" class="eupopup-button eupopup-button_2">Learn more</a>
</div>
<div class="clearfix"></div>
<a href="#" class="eupopup-closebutton">x</a>
</div>
</div>
Parameters
The script takes quite a few parameters. The suggested method to override these is from the init method (find the out-of-the-box one in the jquery-eu-cookie-law-popup.js):
$(document).euCookieLawPopup().init({
cookiePolicyUrl : '/?cookie-policy',
popupPosition : 'top',
colorStyle : 'default',
compactStyle : false,
popupTitle : 'This website is using cookies',
popupText : 'We use cookies to ensure that we give you the best experience on our website. If you continue without changing your settings, we\'ll assume that you are happy to receive all cookies on this website.',
buttonContinueTitle : 'Continue',
buttonLearnmoreTitle : 'Learn more',
buttonLearnmoreOpenInNewWindow : true,
agreementExpiresInDays : 30,
autoAcceptCookiePolicy : false,
htmlMarkup : null
});
Events
If you need to be notified about the consent somewhere in your code (for example, to enable the cookies in other parts of your software), you can listen to the events.
'user_cookie_consent_changed' event is fired right after the user accepted or rejected the popup.
'user_cookie_already_accepted' event is fired on page load if the user already accepted using cookies in a previous session.
$(document).bind("user_cookie_consent_changed", function(event, object) {
// true or false
console.log("User consent: " + $(object).attr('consent') );
});
$(document).bind("user_cookie_already_accepted", function(event, object) {
// true or false
console.log("User consent: " + $(object).attr('consent') );
});
GDPR compliance
There are certain things that the website simply cannot do without the user's consent. With this plugin you can ask the user first and perform certain actions based on their decision, using the built-in events.
Using Google Analytics integration as an example: it's still safe to ignore most of the code as per usual, but only call the initialisation function when the user consent status changed.
<!-- still include most of the snippet -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-XXXXXXX-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
// Don't call the init functions just yet:
// gtag('js', new Date());
// gtag('config', 'UA-XXXXXXXX-1');
function initialiseGoogleAnalytics() {
gtag('js', new Date());
gtag('config', 'UA-XXXXXXXX-1');
}
// Subscribe for the cookie consent events
$(document).bind("user_cookie_already_accepted", function(event, object) {
initialiseGoogleAnalytics();
});
$(document).bind("user_cookie_consent_changed", function(event, object) {
const userConsentGiven = $(object).attr('consent');
if (userConsentGiven) {
// User clicked on enabling cookies. Now it's safe to call the
// init functions.
initialiseGoogleAnalytics();
}
});
</script>
Created By