1 | /** |
2 | * EXAMPLE 1: |
3 | * |
4 | * <html lang="en" ... > |
5 | * ... |
6 | * <script |
7 | * id="cookieWarn" |
8 | * data-lang-en="{
|
9 | * 'text': 'Our website uses cookies.', |
10 | * 'more_text': 'Click here for more information', |
11 | * 'more_link': 'http://ec.europa.eu/ipg/basics/legal/cookies/index_en.htm', |
12 | * 'accept_text': 'I accept', |
13 | * 'reject_text': 'I reject', |
14 | * 'reject_info': 'You can disable unwanted cookies by using this program', |
15 | * 'reject_link': 'https://www.ghostery.com/' |
16 | * }, |
17 | * }" |
18 | * data-expire="365" (optional, default 365 day) |
19 | * data-domain="*.domain.tld" (cookie domain, optional) |
20 | * data-path="/" (cookie path, optional) |
21 | * data-secure="true" (cookie secure, true / false, optional) |
22 | * data-delay="750" (optional, default 500) |
23 | * data-class="customCookieWarning" (optional) |
24 | * data-style="#cookieWarnBox a { color: #ff0000; }" (optional)
|
25 | * type="text/javascript" |
26 | * src="../cookie-warn.min.js"> |
27 | * </script> |
28 | * |
29 | * EXAMPLE 2: |
30 | * |
31 | * <html lang="en" ... > |
32 | * ... |
33 | * <script type="text/javascript" src="../cookie-warn.min.js"></script> |
34 | * |
35 | * <div |
36 | * id="cookieWarn" |
37 | * data-lang-en="{
|
38 | * 'text':'Our website uses cookies.', |
39 | * 'accept_text':'I accept', |
40 | * 'more_text':'Click here for more information', |
41 | * 'more_link':'http://ec.europa.eu/ipg/basics/legal/cookies/index_en.htm' |
42 | * }" |
43 | * data-lang-hu="{
|
44 | * 'text':'Weboldalunk sütiket használ.', |
45 | * 'accept_text':'Elfogadom', |
46 | * 'more_text':'Kattints ide a bÅ‘vebb információért', |
47 | * 'more_link':'http://ec.europa.eu/ipg/basics/legal/cookies/index_en.htm' |
48 | * }"> |
49 | * </div> |
50 | * |
51 | */ |
52 | |
53 | (function (fn) {
|
54 | |
55 | "use strict"; |
56 | |
57 | // set or get cookie |
58 | var cookie = function (name, value, days, path, domain, secure) {
|
59 | |
60 | if (value === undefined) {
|
61 | |
62 | var i, x, y, cookies = document.cookie.split(";");
|
63 | |
64 | for (i = 0; i < cookies.length; i++) {
|
65 | |
66 | x = cookies[i].substr(0, cookies[i].indexOf("="));
|
67 | y = cookies[i].substr(cookies[i].indexOf("=") + 1);
|
68 | x = x.replace(/^\s+|\s+$/g, ""); |
69 | |
70 | if (x == name) {
|
71 | return y; |
72 | } |
73 | |
74 | } |
75 | |
76 | } else {
|
77 | |
78 | days = days ? days : 365; |
79 | var expire = new Date(); |
80 | expire.setDate(expire.getDate() + days); |
81 | var values = []; |
82 | |
83 | if (days !== undefined && days !== null) {
|
84 | values.push("expires=" + expire.toGMTString());
|
85 | } |
86 | |
87 | if (path !== undefined && path !== null) {
|
88 | values.push("path=" + path);
|
89 | } |
90 | |
91 | if (domain !== undefined && domain !== null) {
|
92 | values.push("domain=" + domain);
|
93 | } |
94 | |
95 | if (secure !== undefined && secure !== null && secure) {
|
96 | values.push("secure");
|
97 | } |
98 | |
99 | if (values.length > 0) {
|
100 | value = value + "; " + values.join("; ");
|
101 | } |
102 | |
103 | document.cookie = escape(name) + "=" + value; |
104 | |
105 | } |
106 | |
107 | }; |
108 | |
109 | // if cookie available then return |
110 | if (cookie(fn)) {
|
111 | return; |
112 | } |
113 | |
114 | // warning box close function |
115 | window[fn] = {
|
116 | |
117 | close: function (expire, path, domain, secure) {
|
118 | |
119 | // set the cookie |
120 | cookie(fn, true, expire, path, domain, secure); |
121 | |
122 | // remove warning box |
123 | var wbox = document.getElementById(fn + 'Box'); |
124 | wbox.className = wbox.className + ' closed'; |
125 | |
126 | }, |
127 | |
128 | reject: function () {
|
129 | |
130 | // show reject information |
131 | var wbox = document.getElementById(fn + 'Box'); |
132 | wbox.className = wbox.className + ' reject'; |
133 | |
134 | } |
135 | |
136 | }; |
137 | |
138 | |
139 | var warn = function () {
|
140 | |
141 | // get parameters |
142 | var tag = document.getElementById('cookieWarn');
|
143 | |
144 | if (!tag) {
|
145 | console.error('cookieWarn element not found by id');
|
146 | return; |
147 | } |
148 | |
149 | var lang = document.documentElement.lang; |
150 | var data = JSON.parse(tag.getAttribute('data-lang-' + lang).replace(/'/g, '"'));
|
151 | |
152 | if (!data) {
|
153 | return; |
154 | } |
155 | |
156 | var delay = parseInt(tag.getAttribute('data-delay'));
|
157 | var domain = tag.getAttribute('data-domain');
|
158 | var path = tag.getAttribute('data-path');
|
159 | var secure = tag.getAttribute('data-secure');
|
160 | var expire = parseInt(tag.getAttribute('data-expire'));
|
161 | var style = tag.getAttribute('data-style');
|
162 | var classes = tag.getAttribute('data-class');
|
163 | |
164 | var bootstrap = (window.jQuery && typeof $().modal == 'function'); |
165 | |
166 | var css = {
|
167 | |
168 | style: [ |
169 | '#' + fn + 'Box {transition:all 0.4s ease-in-out;position:fixed;z-index:999999;bottom:-20px;left:0;right:0;opacity:0;text-align:center;padding:10px;background-color:#212121}',
|
170 | '#' + fn + 'Box .btn {white-space:nowrap}',
|
171 | '#' + fn + 'Box .reject_more {padding:0px 10px;display:none;}',
|
172 | '#' + fn + 'Box.reject .reject_more {display:block;}',
|
173 | '#' + fn + 'Box.loaded {opacity:0.9;bottom:0px}',
|
174 | '#' + fn + 'Box.closed {opacity:0;bottom:-20px}'
|
175 | ], |
176 | style2: [ |
177 | '#' + fn + 'Box {font-family: Verdana;line-height:24px;color:#f1f1f1;font-size:14px;}',
|
178 | '#' + fn + 'Box .btn {text-transform:uppercase;cursor:pointer;background-color:#f1f1f1;color:#659fda;padding:3px 14px;margin-left:10px;}',
|
179 | '#' + fn + 'Box .btn:hover {background-color:#ffffff;color:#4d78a5;}',
|
180 | '#' + fn + 'Box a {text-decoration:none;color:#659fda}',
|
181 | ], |
182 | type: 'text/css', |
183 | element: document.createElement('style'),
|
184 | append: function () {
|
185 | |
186 | if (!bootstrap) {
|
187 | this.style = this.style.concat(this.style2); |
188 | } |
189 | |
190 | this.element.type = this.type; |
191 | this.element.appendChild(document.createTextNode(this.style.join(' ')));
|
192 | document.head.insertBefore(this.element, document.head.childNodes[0]); |
193 | |
194 | } |
195 | }; |
196 | |
197 | css.append(); |
198 | |
199 | // create warning box |
200 | var wbox = document.createElement('div');
|
201 | wbox.setAttribute("id", fn + "Box");
|
202 | |
203 | if (classes) {
|
204 | wbox.setAttribute("class", classes);
|
205 | } |
206 | |
207 | var args = [ |
208 | expire ? expire : 'null', |
209 | path ? "'" + path + "'" : '/', |
210 | domain ? "'" + domain + "'" : 'null', |
211 | secure == "true" ? 1 : 0, |
212 | ].join(',');
|
213 | |
214 | var info = (data.more_link && data.more_text) ? ' <a target="_blank" href="' + data.more_link + '">' + data.more_text + '</a> ' : ''; |
215 | var accept_button = '<span class="btn btn-default" id="' + fn + 'Close" onclick="' + fn + '.close(' + args + ');">' + data.accept_text + '</span>';
|
216 | |
217 | if (data.reject_text) {
|
218 | var reject_button = '<span class="btn btn-warning" onclick="' + fn + '.reject();">' + data.reject_text + '</span>'; |
219 | var reject_content = '<span class="reject_more">' + data.reject_info + ' <a target="_blank" href="' + data.reject_link + '">' + data.reject_link + '</a></span>'; |
220 | } else {
|
221 | var reject_button = ''; |
222 | var reject_content = ''; |
223 | } |
224 | |
225 | wbox.innerHTML = '<div class="text">' + data.text + info + accept_button + reject_button + reject_content + '</div>'; |
226 | |
227 | // append to body |
228 | var body = document.getElementsByTagName("body")[0];
|
229 | body.appendChild(wbox); |
230 | |
231 | setTimeout(function () {
|
232 | wbox.className = wbox.className + ' loaded'; |
233 | }, delay ? parseInt(delay) : 500); |
234 | |
235 | } |
236 | |
237 | |
238 | var isDOMready = function(){
|
239 | |
240 | if (document.readyState == 'complete') {
|
241 | warn(); |
242 | } else {
|
243 | setTimeout(function () {
|
244 | isDOMready(); |
245 | }, 1000); |
246 | } |
247 | |
248 | }; |
249 | |
250 | isDOMready(); |
251 | |
252 | })('cookieWarn'); |
From https://www.cssscript.com/responsive-eu-cookie-law-alert-bar-cookie-warn/
Travelled to 6 computer(s): bhatertpkbcr, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tvejysmllsmz, vouqrxazstgt
No comments. add comment
| Snippet ID: | #1021514 |
| Snippet name: | cookie-warn.js |
| Eternal ID of this version: | #1021514/2 |
| Text MD5: | 40223140496ade9b60ac6dea69d96df0 |
| Author: | stefan |
| Category: | javax / html |
| Type: | Document |
| Public (visible to everyone): | Yes |
| Archived (hidden from active list): | No |
| Created/modified: | 2019-02-16 00:09:44 |
| Source code size: | 8476 bytes / 252 lines |
| Pitched / IR pitched: | No / No |
| Views / Downloads: | 463 / 229 |
| Version history: | 1 change(s) |
| Referenced in: | [show references] |