@alexsab-ru/scripts 0.11.0 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +153 -153
- package/README_RU.md +153 -153
- package/index.js +4 -4
- package/lib/analytics.js +208 -111
- package/lib/calltouch.js +75 -73
- package/lib/cookie.js +51 -51
- package/lib/form.js +345 -344
- package/package.json +29 -29
package/lib/analytics.js
CHANGED
|
@@ -1,111 +1,208 @@
|
|
|
1
|
-
window.dataLayer = window.dataLayer || [];
|
|
2
|
-
|
|
3
|
-
export function reachGoal(eventAction, t = {}) {
|
|
4
|
-
t.eventAction = eventAction;
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
1
|
+
window.dataLayer = window.dataLayer || [];
|
|
2
|
+
|
|
3
|
+
export function reachGoal(eventAction, t = {}) {
|
|
4
|
+
t.eventAction = eventAction;
|
|
5
|
+
if(isGTMInstalled()) {
|
|
6
|
+
dl("reachGoal-"+eventAction, {
|
|
7
|
+
...t
|
|
8
|
+
})
|
|
9
|
+
} else {
|
|
10
|
+
if(checkGA4InDataLayer()) {
|
|
11
|
+
gGoal(eventAction, {
|
|
12
|
+
...t
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
ymGoal(eventAction, {
|
|
16
|
+
...t
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export function pageView(eventAction, t = {}) {
|
|
22
|
+
t.eventAction = eventAction;
|
|
23
|
+
if(isGTMInstalled()) {
|
|
24
|
+
dl("pageView-"+eventAction, {
|
|
25
|
+
...t
|
|
26
|
+
})
|
|
27
|
+
} else {
|
|
28
|
+
if(checkGA4InDataLayer()) {
|
|
29
|
+
gGoal(eventAction, {
|
|
30
|
+
...t
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
ymPage(eventAction, {
|
|
34
|
+
...t
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export function dl(event, t = {}) {
|
|
40
|
+
// console.log(event, t);
|
|
41
|
+
void 0 !== window.dataLayer && window.dataLayer.push({
|
|
42
|
+
event: event,
|
|
43
|
+
...t
|
|
44
|
+
})
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export function getFormDataObject(formData, form_id) {
|
|
48
|
+
let eventProperties = {};
|
|
49
|
+
formData.forEach((value, key) => (eventProperties[key] = value));
|
|
50
|
+
eventProperties['formID'] = form_id;
|
|
51
|
+
return {
|
|
52
|
+
"eventProperties": eventProperties,
|
|
53
|
+
"eventCategory": "Lead",
|
|
54
|
+
"sourceName": "page",
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export function gGoal(goalName,goalParams){
|
|
59
|
+
try {
|
|
60
|
+
dl(goalName, goalParams)
|
|
61
|
+
} catch (err) {
|
|
62
|
+
console.error(goalName + ' - error send goal to Google Analytics');
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
export function ymGoal(goalName,goalParams) {
|
|
68
|
+
// console.log("ymGoal:", goalName,goalParams);
|
|
69
|
+
try {
|
|
70
|
+
Ya._metrika.getCounters().forEach((me)=>{
|
|
71
|
+
ym(me.id, "reachGoal", goalName, goalParams||{})
|
|
72
|
+
})
|
|
73
|
+
} catch (err) {
|
|
74
|
+
console.error(goalName + ' - error send goal to Metrika');
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export function ymPage(pageName,goalParams) {
|
|
79
|
+
try {
|
|
80
|
+
Ya._metrika.getCounters().forEach((me)=>{
|
|
81
|
+
ym(me.id, "hit", pageName, goalParams||{})
|
|
82
|
+
})
|
|
83
|
+
} catch (err) {
|
|
84
|
+
console.error(pageName + ' - error send page to Metrika');
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export function addClickCopyContextmenuGoals(item, prefix) {
|
|
89
|
+
item.addEventListener('click', function(evt) {
|
|
90
|
+
reachGoal(prefix + '_click');
|
|
91
|
+
});
|
|
92
|
+
item.addEventListener('copy', function(evt) {
|
|
93
|
+
reachGoal(prefix + '_copy');
|
|
94
|
+
});
|
|
95
|
+
item.addEventListener('contextmenu', function(evt) {
|
|
96
|
+
reachGoal(prefix + '_contextmenu');
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
document.querySelectorAll('a[href^\="tel:"]').forEach((tel)=>{
|
|
101
|
+
addClickCopyContextmenuGoals(tel, "phone");
|
|
102
|
+
});
|
|
103
|
+
document.querySelectorAll('a[href^\="mailto:"]').forEach((tel)=>{
|
|
104
|
+
addClickCopyContextmenuGoals(tel, "email");
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
let goals = [
|
|
108
|
+
{
|
|
109
|
+
selector: 'form input',
|
|
110
|
+
action: 'click',
|
|
111
|
+
goal: 'form_click',
|
|
112
|
+
title: 'Клик в поле любой формы',
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
selector: 'form input',
|
|
116
|
+
action: 'change',
|
|
117
|
+
goal: 'form_change',
|
|
118
|
+
title: 'Изменения полей любой формы',
|
|
119
|
+
},
|
|
120
|
+
|
|
121
|
+
];
|
|
122
|
+
|
|
123
|
+
goals.forEach(function(value, index, array){
|
|
124
|
+
if(value.goal != null) {
|
|
125
|
+
document.querySelectorAll(value.selector).forEach(function(element) {
|
|
126
|
+
// console.log("Set \"" + value.goal + "\" goal", element);
|
|
127
|
+
element.addEventListener(value.action, function(){
|
|
128
|
+
reachGoal(value.goal, {
|
|
129
|
+
title: value.title,
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
} else if(value.hit != null) {
|
|
134
|
+
document.querySelectorAll(value.selector).forEach(function(element) {
|
|
135
|
+
// console.log("Set \"" + value.goal + "\" hit", element);
|
|
136
|
+
element.addEventListener(value.action, function(){
|
|
137
|
+
pageView(value.hit, {
|
|
138
|
+
title: value.title,
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
} else {
|
|
143
|
+
console.warn("Ошибка в списке целей", value);
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
function isGTMInstalled() {
|
|
148
|
+
// console.log("gtm.js:", window.dataLayer.length > 0 && dataLayer[0].event == "gtm.js");
|
|
149
|
+
// console.log("window.isGTMInstalled:", window.isGTMInstalled);
|
|
150
|
+
if (window.dataLayer.length > 0 && dataLayer[0].event == "gtm.js") return true;
|
|
151
|
+
switch(window.isGTMInstalled) {
|
|
152
|
+
case true:
|
|
153
|
+
return true;
|
|
154
|
+
break;
|
|
155
|
+
case false:
|
|
156
|
+
return false;
|
|
157
|
+
break;
|
|
158
|
+
default:
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
let scripts = document.querySelectorAll('script');
|
|
162
|
+
for (let script of scripts) {
|
|
163
|
+
if (script.src && script.src.includes('gtm.js')) {
|
|
164
|
+
window.isGTMInstalled = true;
|
|
165
|
+
return true;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
window.isGTMInstalled = false;
|
|
169
|
+
return false;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
function checkGA4InDataLayer() {
|
|
173
|
+
// console.log("window.ga4Installed:", window.ga4Installed);
|
|
174
|
+
switch(window.ga4Installed) {
|
|
175
|
+
case true:
|
|
176
|
+
return true;
|
|
177
|
+
break;
|
|
178
|
+
case false:
|
|
179
|
+
return false;
|
|
180
|
+
break;
|
|
181
|
+
default:
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
if (typeof window.dataLayer !== 'undefined') {
|
|
185
|
+
// Просмотр событий в dataLayer для поиска конфигурации GA4
|
|
186
|
+
const ga4Config = window.dataLayer.find(item =>
|
|
187
|
+
item && item[0] === 'config' && item[1] && item[1].startsWith('G-')
|
|
188
|
+
);
|
|
189
|
+
|
|
190
|
+
if (ga4Config) {
|
|
191
|
+
// console.log('GA4 настройка найдена в dataLayer:', ga4Config[1]);
|
|
192
|
+
window.ga4Installed = true;
|
|
193
|
+
return true;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
const scripts = document.querySelectorAll('script');
|
|
198
|
+
scripts.forEach(script => {
|
|
199
|
+
if (script.src && script.src.includes('gtag.js')) {
|
|
200
|
+
window.ga4Installed = true;
|
|
201
|
+
return true;
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
// console.log('GA4 конфигурация не найдена в dataLayer');
|
|
206
|
+
window.ga4Installed = false;
|
|
207
|
+
return false;
|
|
208
|
+
}
|
package/lib/calltouch.js
CHANGED
|
@@ -1,74 +1,76 @@
|
|
|
1
|
-
export const createRequest = (routeKey, phoneValue, verbose = false) => {
|
|
2
|
-
return new Promise((resolve, reject) => {
|
|
3
|
-
let errorText = '';
|
|
4
|
-
if(window.ctw) {
|
|
5
|
-
window.ctw.getRouteKeyData(routeKey, function(success, data){
|
|
6
|
-
verbose && console.log(success, data);
|
|
7
|
-
if (success) {
|
|
8
|
-
if (data.widgetFound) {
|
|
9
|
-
if (data.widgetData.callCenterWorkingMode == 'working_hours') {
|
|
10
|
-
verbose && console.log('колл-центр работает, отображение виджета');
|
|
11
|
-
} else {
|
|
12
|
-
if (data.widgetData.collectNonWorkingRequests) {
|
|
13
|
-
verbose && console.log('колл-центр не работает, но можем отобразить форму нерабочего времени');
|
|
14
|
-
} else {
|
|
15
|
-
verbose && console.log('колл-центр не работает, заявки в нерабочее время не собираем');
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
var phone_ct = phoneValue.replace(/[^0-9]/gim, '');
|
|
20
|
-
if (phone_ct[0] == '8') { phone_ct = phone_ct.substring(1); }
|
|
21
|
-
if (phone_ct[0] == '7') { phone_ct = phone_ct.substring(1); }
|
|
22
|
-
phone_ct = '7' + phone_ct;
|
|
23
|
-
|
|
24
|
-
window.ctw.createRequest(
|
|
25
|
-
routeKey,
|
|
26
|
-
phone_ct,
|
|
27
|
-
[
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}
|
|
73
|
-
|
|
1
|
+
export const createRequest = (routeKey, phoneValue, nameValue, verbose = false) => {
|
|
2
|
+
return new Promise((resolve, reject) => {
|
|
3
|
+
let errorText = '';
|
|
4
|
+
if(window.ctw) {
|
|
5
|
+
window.ctw.getRouteKeyData(routeKey, function(success, data){
|
|
6
|
+
verbose && console.log(success, data);
|
|
7
|
+
if (success) {
|
|
8
|
+
if (data.widgetFound) {
|
|
9
|
+
if (data.widgetData.callCenterWorkingMode == 'working_hours') {
|
|
10
|
+
verbose && console.log('колл-центр работает, отображение виджета');
|
|
11
|
+
} else {
|
|
12
|
+
if (data.widgetData.collectNonWorkingRequests) {
|
|
13
|
+
verbose && console.log('колл-центр не работает, но можем отобразить форму нерабочего времени');
|
|
14
|
+
} else {
|
|
15
|
+
verbose && console.log('колл-центр не работает, заявки в нерабочее время не собираем');
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
var phone_ct = phoneValue.replace(/[^0-9]/gim, '');
|
|
20
|
+
if (phone_ct[0] == '8') { phone_ct = phone_ct.substring(1); }
|
|
21
|
+
if (phone_ct[0] == '7') { phone_ct = phone_ct.substring(1); }
|
|
22
|
+
phone_ct = '7' + phone_ct;
|
|
23
|
+
|
|
24
|
+
window.ctw.createRequest(
|
|
25
|
+
routeKey,
|
|
26
|
+
phone_ct,
|
|
27
|
+
( nameValue.length > 0 ? [
|
|
28
|
+
{"name": "Name", "value": nameValue}
|
|
29
|
+
] : []),
|
|
30
|
+
function (success, data) {
|
|
31
|
+
verbose && console.log(success, data)
|
|
32
|
+
if (success) {
|
|
33
|
+
verbose && console.log('Создана заявка на колбек, идентификатор: ' + data.callbackRequestId);
|
|
34
|
+
resolve(data); // Разрешаем Promise данными от createRequest
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
errorText = 'Error in createRequest';
|
|
38
|
+
switch (data.type) {
|
|
39
|
+
case "request_throttle_timeout":
|
|
40
|
+
case "request_throttle_count":
|
|
41
|
+
errorText = 'Достигнут лимит создания заявок, попробуйте позже';
|
|
42
|
+
verbose && console.log(errorText);
|
|
43
|
+
break;
|
|
44
|
+
case "request_phone_blacklisted":
|
|
45
|
+
errorText = 'номер телефона находится в черном списке';
|
|
46
|
+
verbose && console.log(errorText);
|
|
47
|
+
break;
|
|
48
|
+
case "validation_error":
|
|
49
|
+
errorText = 'были переданы некорректные данные';
|
|
50
|
+
verbose && console.log(errorText);
|
|
51
|
+
break;
|
|
52
|
+
default:
|
|
53
|
+
errorText = 'Во время выполнения запроса произошла ошибка: ' + data.type;
|
|
54
|
+
verbose && console.log(errorText);
|
|
55
|
+
}
|
|
56
|
+
reject(errorText); // Отклоняем Promise в случае ошибки
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
);
|
|
60
|
+
} else {
|
|
61
|
+
errorText = 'не найден включенный виджет '+routeKey+', либо услуга обратного звонка не активна';
|
|
62
|
+
verbose && console.log(errorText);
|
|
63
|
+
reject(errorText);
|
|
64
|
+
}
|
|
65
|
+
} else {
|
|
66
|
+
errorText = 'во время обработки произошла ошибка';
|
|
67
|
+
verbose && console.log(errorText);
|
|
68
|
+
verbose && console.log(data)
|
|
69
|
+
reject(errorText);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
} else {
|
|
73
|
+
reject("window.ctw is not defined");
|
|
74
|
+
}
|
|
75
|
+
});
|
|
74
76
|
};
|
package/lib/cookie.js
CHANGED
|
@@ -1,52 +1,52 @@
|
|
|
1
|
-
export function getCookie(name)
|
|
2
|
-
{
|
|
3
|
-
let matches = document.cookie.match(new RegExp(
|
|
4
|
-
"(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
|
|
5
|
-
));
|
|
6
|
-
return matches ? decodeURIComponent(matches[1]) : undefined;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export function setCookie(name, value, props)
|
|
10
|
-
{
|
|
11
|
-
props = props || {}
|
|
12
|
-
var exp = props.expires
|
|
13
|
-
if (typeof exp == "number" && exp) {
|
|
14
|
-
var d = new Date()
|
|
15
|
-
d.setTime(d.getTime() + exp*1000)
|
|
16
|
-
exp = props.expires = d
|
|
17
|
-
}
|
|
18
|
-
if(exp && exp.toUTCString) { props.expires = exp.toUTCString() }
|
|
19
|
-
value = encodeURIComponent(value)
|
|
20
|
-
var updatedCookie = name + "=" + value
|
|
21
|
-
for(var propName in props){
|
|
22
|
-
updatedCookie += "; " + propName
|
|
23
|
-
var propValue = props[propName]
|
|
24
|
-
if(propValue !== true){ updatedCookie += "=" + propValue }
|
|
25
|
-
}
|
|
26
|
-
document.cookie = updatedCookie
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export function deleteCookie(name)
|
|
30
|
-
{
|
|
31
|
-
setCookie(name, null, { 'domain':window.location.hostname,'path':'/','expires': -1 })
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export function cookiecook(days = 90)
|
|
35
|
-
{
|
|
36
|
-
let cookiecook = getCookie("cookiecook"),
|
|
37
|
-
cookiewin = document.querySelector('.cookie_notice');
|
|
38
|
-
|
|
39
|
-
if (cookiecook != "no") {
|
|
40
|
-
|
|
41
|
-
cookiewin.classList.remove("hidden");
|
|
42
|
-
|
|
43
|
-
document.getElementById("cookie_close").addEventListener("click", function(e){
|
|
44
|
-
e.preventDefault();
|
|
45
|
-
cookiewin.classList.add("hidden");
|
|
46
|
-
|
|
47
|
-
let date = new Date;
|
|
48
|
-
date.setDate(date.getDate() + days);
|
|
49
|
-
document.cookie = "cookiecook=no; path=/; expires=" + date.toUTCString();
|
|
50
|
-
});
|
|
51
|
-
}
|
|
1
|
+
export function getCookie(name)
|
|
2
|
+
{
|
|
3
|
+
let matches = document.cookie.match(new RegExp(
|
|
4
|
+
"(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
|
|
5
|
+
));
|
|
6
|
+
return matches ? decodeURIComponent(matches[1]) : undefined;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export function setCookie(name, value, props)
|
|
10
|
+
{
|
|
11
|
+
props = props || {}
|
|
12
|
+
var exp = props.expires
|
|
13
|
+
if (typeof exp == "number" && exp) {
|
|
14
|
+
var d = new Date()
|
|
15
|
+
d.setTime(d.getTime() + exp*1000)
|
|
16
|
+
exp = props.expires = d
|
|
17
|
+
}
|
|
18
|
+
if(exp && exp.toUTCString) { props.expires = exp.toUTCString() }
|
|
19
|
+
value = encodeURIComponent(value)
|
|
20
|
+
var updatedCookie = name + "=" + value
|
|
21
|
+
for(var propName in props){
|
|
22
|
+
updatedCookie += "; " + propName
|
|
23
|
+
var propValue = props[propName]
|
|
24
|
+
if(propValue !== true){ updatedCookie += "=" + propValue }
|
|
25
|
+
}
|
|
26
|
+
document.cookie = updatedCookie
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export function deleteCookie(name)
|
|
30
|
+
{
|
|
31
|
+
setCookie(name, null, { 'domain':window.location.hostname,'path':'/','expires': -1 })
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function cookiecook(days = 90)
|
|
35
|
+
{
|
|
36
|
+
let cookiecook = getCookie("cookiecook"),
|
|
37
|
+
cookiewin = document.querySelector('.cookie_notice');
|
|
38
|
+
|
|
39
|
+
if (cookiecook != "no") {
|
|
40
|
+
|
|
41
|
+
cookiewin.classList.remove("hidden");
|
|
42
|
+
|
|
43
|
+
document.getElementById("cookie_close").addEventListener("click", function(e){
|
|
44
|
+
e.preventDefault();
|
|
45
|
+
cookiewin.classList.add("hidden");
|
|
46
|
+
|
|
47
|
+
let date = new Date;
|
|
48
|
+
date.setDate(date.getDate() + days);
|
|
49
|
+
document.cookie = "cookiecook=no; path=/; expires=" + date.toUTCString();
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
52
|
}
|