@alexsab-ru/scripts 0.6.1 → 0.8.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 +111 -111
- package/lib/calltouch.js +73 -73
- package/lib/cookie.js +51 -51
- package/lib/form.js +324 -320
- package/package.json +29 -29
package/LICENSE
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2023 Alexander Sabanov
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2023 Alexander Sabanov
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,154 +1,154 @@
|
|
|
1
|
-
# @alexsab-ru/scripts
|
|
2
|
-
|
|
3
|
-
[Русский](README_RU.md)
|
|
4
|
-
|
|
5
|
-
common libs for websites
|
|
6
|
-
|
|
7
|
-
* [Installation](#Installation)
|
|
8
|
-
* [Analytics module](#analytics-module)
|
|
9
|
-
* [Cookie module](#cookie-module)
|
|
10
|
-
* [Calltouch module](#calltouch-module)
|
|
11
|
-
* [Form module](#form-module)
|
|
12
|
-
|
|
13
|
-
## Installation
|
|
14
|
-
```bash
|
|
15
|
-
pnpm i @alexsab-ru/scripts
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
## Analytics module
|
|
19
|
-
|
|
20
|
-
`reachGoal` and `pageView` functions push to `dataLayer` some data with goal name
|
|
21
|
-
```js
|
|
22
|
-
reachGoal("goalName");
|
|
23
|
-
pageView(goalName);
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
In GTM you can use them for send goals to your analytic system
|
|
27
|
-
|
|
28
|
-
```js
|
|
29
|
-
{
|
|
30
|
-
event: "reachGoal-goalName",
|
|
31
|
-
eventAction: "goalName"
|
|
32
|
-
}
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
Use example:
|
|
36
|
-
|
|
37
|
-
```js
|
|
38
|
-
import { reachGoal } from '@alexsab-ru/scripts';
|
|
39
|
-
|
|
40
|
-
// automatic assign from module
|
|
41
|
-
reachGoal("phone_click");
|
|
42
|
-
reachGoal("phone_copy");
|
|
43
|
-
reachGoal("phone_contextmenu");
|
|
44
|
-
reachGoal("email_click");
|
|
45
|
-
reachGoal("email_copy");
|
|
46
|
-
reachGoal("email_contextmenu");
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
For form's analytics you may use these goals
|
|
50
|
-
|
|
51
|
-
```js
|
|
52
|
-
reachGoal("form_open");
|
|
53
|
-
reachGoal("form_click"); // automatic assign from module
|
|
54
|
-
reachGoal("form_change"); // automatic assign from module
|
|
55
|
-
reachGoal("form_submit");
|
|
56
|
-
reachGoal("form_required");
|
|
57
|
-
reachGoal("form_error");
|
|
58
|
-
reachGoal("form_success");
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
`getFormDataObject` is needed for Calltouch request tag.
|
|
62
|
-
|
|
63
|
-
```js
|
|
64
|
-
import { getFormDataObject } from '@alexsab-ru/scripts';
|
|
65
|
-
|
|
66
|
-
document.querySelectorAll("form").forEach((form) => {
|
|
67
|
-
form.onsubmit = async (event) => {
|
|
68
|
-
|
|
69
|
-
var formData = new FormData(form);
|
|
70
|
-
// ...
|
|
71
|
-
var formDataObj = getFormDataObject(formData, form.id);
|
|
72
|
-
|
|
73
|
-
await fetch("https://example.com/api/lead/", {
|
|
74
|
-
// ...
|
|
75
|
-
})
|
|
76
|
-
.then((res) => res.json())
|
|
77
|
-
.then((data) => {
|
|
78
|
-
if (data.answer == "required") {
|
|
79
|
-
reachGoal("form_required");
|
|
80
|
-
return;
|
|
81
|
-
} else if (data.answer == "error") {
|
|
82
|
-
reachGoal("form_error");
|
|
83
|
-
return;
|
|
84
|
-
} else {
|
|
85
|
-
reachGoal("form_success", formDataObj);
|
|
86
|
-
}
|
|
87
|
-
form.reset();
|
|
88
|
-
})
|
|
89
|
-
.catch((error) => {
|
|
90
|
-
reachGoal("form_error");
|
|
91
|
-
});
|
|
92
|
-
};
|
|
93
|
-
});
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
### Goals can be achieved as follows
|
|
97
|
-
|
|
98
|
-
Interaction with the form
|
|
99
|
-
|
|
100
|
-
- **form_open** – opened the form
|
|
101
|
-
- **form_click** – clicked on the form
|
|
102
|
-
- **form_change** – changes in the form
|
|
103
|
-
- **form_submit** – pressed the Submit button
|
|
104
|
-
- **form_required** – incomplete form filling
|
|
105
|
-
- **form_error** – error, data did not send for some reason
|
|
106
|
-
- **form_success** – received a positive response from the server, i.e., data was sent
|
|
107
|
-
- **form_close** – closed the form
|
|
108
|
-
|
|
109
|
-
Interaction with the phone
|
|
110
|
-
|
|
111
|
-
- **phone_click** — clicked on it with the mouse
|
|
112
|
-
- **phone_contextmenu** — opening the context menu on it with the right mouse button
|
|
113
|
-
- **phone_copy** — copying the selected text
|
|
114
|
-
|
|
115
|
-
If there is a clickable email on the page, goals will be triggered on it
|
|
116
|
-
|
|
117
|
-
- **email_click** — clicked on it with the mouse
|
|
118
|
-
- **email_contextmenu** — opening the context menu on it with the right mouse button
|
|
119
|
-
- **email_copy** — copying the selected text
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
## Cookie module
|
|
123
|
-
|
|
124
|
-
```js
|
|
125
|
-
import { getCookie, setCookie, deleteCookie, cookiecook } from './cookie';
|
|
126
|
-
|
|
127
|
-
getCookie('cookie_name');
|
|
128
|
-
setCookie('cookie_name');
|
|
129
|
-
deleteCookie('cookie_name');
|
|
130
|
-
cookiecook(days);
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
## Calltouch module
|
|
134
|
-
|
|
135
|
-
```js
|
|
136
|
-
import { createRequest } from '@alexsab-ru/scripts';
|
|
137
|
-
|
|
138
|
-
// Sending a callback request to CallTouch
|
|
139
|
-
createRequest("ct_callback", "+7 (987) 654-32-10");
|
|
140
|
-
|
|
141
|
-
// to display the log, the third parameter must be used
|
|
142
|
-
createRequest("ct_callback", "+7 (987) 654-32-10", true);
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
## Form module
|
|
146
|
-
|
|
147
|
-
```js
|
|
148
|
-
import { connectForms, cookiecook } from '@alexsab-ru/scripts';
|
|
149
|
-
|
|
150
|
-
cookiecook();
|
|
151
|
-
connectForms('https://alexsab.ru/lead/test/', function() {
|
|
152
|
-
console.log("sucess lead");
|
|
153
|
-
});
|
|
1
|
+
# @alexsab-ru/scripts
|
|
2
|
+
|
|
3
|
+
[Русский](README_RU.md)
|
|
4
|
+
|
|
5
|
+
common libs for websites
|
|
6
|
+
|
|
7
|
+
* [Installation](#Installation)
|
|
8
|
+
* [Analytics module](#analytics-module)
|
|
9
|
+
* [Cookie module](#cookie-module)
|
|
10
|
+
* [Calltouch module](#calltouch-module)
|
|
11
|
+
* [Form module](#form-module)
|
|
12
|
+
|
|
13
|
+
## Installation
|
|
14
|
+
```bash
|
|
15
|
+
pnpm i @alexsab-ru/scripts
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Analytics module
|
|
19
|
+
|
|
20
|
+
`reachGoal` and `pageView` functions push to `dataLayer` some data with goal name
|
|
21
|
+
```js
|
|
22
|
+
reachGoal("goalName");
|
|
23
|
+
pageView(goalName);
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
In GTM you can use them for send goals to your analytic system
|
|
27
|
+
|
|
28
|
+
```js
|
|
29
|
+
{
|
|
30
|
+
event: "reachGoal-goalName",
|
|
31
|
+
eventAction: "goalName"
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Use example:
|
|
36
|
+
|
|
37
|
+
```js
|
|
38
|
+
import { reachGoal } from '@alexsab-ru/scripts';
|
|
39
|
+
|
|
40
|
+
// automatic assign from module
|
|
41
|
+
reachGoal("phone_click");
|
|
42
|
+
reachGoal("phone_copy");
|
|
43
|
+
reachGoal("phone_contextmenu");
|
|
44
|
+
reachGoal("email_click");
|
|
45
|
+
reachGoal("email_copy");
|
|
46
|
+
reachGoal("email_contextmenu");
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
For form's analytics you may use these goals
|
|
50
|
+
|
|
51
|
+
```js
|
|
52
|
+
reachGoal("form_open");
|
|
53
|
+
reachGoal("form_click"); // automatic assign from module
|
|
54
|
+
reachGoal("form_change"); // automatic assign from module
|
|
55
|
+
reachGoal("form_submit");
|
|
56
|
+
reachGoal("form_required");
|
|
57
|
+
reachGoal("form_error");
|
|
58
|
+
reachGoal("form_success");
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
`getFormDataObject` is needed for Calltouch request tag.
|
|
62
|
+
|
|
63
|
+
```js
|
|
64
|
+
import { getFormDataObject } from '@alexsab-ru/scripts';
|
|
65
|
+
|
|
66
|
+
document.querySelectorAll("form").forEach((form) => {
|
|
67
|
+
form.onsubmit = async (event) => {
|
|
68
|
+
|
|
69
|
+
var formData = new FormData(form);
|
|
70
|
+
// ...
|
|
71
|
+
var formDataObj = getFormDataObject(formData, form.id);
|
|
72
|
+
|
|
73
|
+
await fetch("https://example.com/api/lead/", {
|
|
74
|
+
// ...
|
|
75
|
+
})
|
|
76
|
+
.then((res) => res.json())
|
|
77
|
+
.then((data) => {
|
|
78
|
+
if (data.answer == "required") {
|
|
79
|
+
reachGoal("form_required");
|
|
80
|
+
return;
|
|
81
|
+
} else if (data.answer == "error") {
|
|
82
|
+
reachGoal("form_error");
|
|
83
|
+
return;
|
|
84
|
+
} else {
|
|
85
|
+
reachGoal("form_success", formDataObj);
|
|
86
|
+
}
|
|
87
|
+
form.reset();
|
|
88
|
+
})
|
|
89
|
+
.catch((error) => {
|
|
90
|
+
reachGoal("form_error");
|
|
91
|
+
});
|
|
92
|
+
};
|
|
93
|
+
});
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Goals can be achieved as follows
|
|
97
|
+
|
|
98
|
+
Interaction with the form
|
|
99
|
+
|
|
100
|
+
- **form_open** – opened the form
|
|
101
|
+
- **form_click** – clicked on the form
|
|
102
|
+
- **form_change** – changes in the form
|
|
103
|
+
- **form_submit** – pressed the Submit button
|
|
104
|
+
- **form_required** – incomplete form filling
|
|
105
|
+
- **form_error** – error, data did not send for some reason
|
|
106
|
+
- **form_success** – received a positive response from the server, i.e., data was sent
|
|
107
|
+
- **form_close** – closed the form
|
|
108
|
+
|
|
109
|
+
Interaction with the phone
|
|
110
|
+
|
|
111
|
+
- **phone_click** — clicked on it with the mouse
|
|
112
|
+
- **phone_contextmenu** — opening the context menu on it with the right mouse button
|
|
113
|
+
- **phone_copy** — copying the selected text
|
|
114
|
+
|
|
115
|
+
If there is a clickable email on the page, goals will be triggered on it
|
|
116
|
+
|
|
117
|
+
- **email_click** — clicked on it with the mouse
|
|
118
|
+
- **email_contextmenu** — opening the context menu on it with the right mouse button
|
|
119
|
+
- **email_copy** — copying the selected text
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
## Cookie module
|
|
123
|
+
|
|
124
|
+
```js
|
|
125
|
+
import { getCookie, setCookie, deleteCookie, cookiecook } from './cookie';
|
|
126
|
+
|
|
127
|
+
getCookie('cookie_name');
|
|
128
|
+
setCookie('cookie_name');
|
|
129
|
+
deleteCookie('cookie_name');
|
|
130
|
+
cookiecook(days);
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## Calltouch module
|
|
134
|
+
|
|
135
|
+
```js
|
|
136
|
+
import { createRequest } from '@alexsab-ru/scripts';
|
|
137
|
+
|
|
138
|
+
// Sending a callback request to CallTouch
|
|
139
|
+
createRequest("ct_callback", "+7 (987) 654-32-10");
|
|
140
|
+
|
|
141
|
+
// to display the log, the third parameter must be used
|
|
142
|
+
createRequest("ct_callback", "+7 (987) 654-32-10", true);
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
## Form module
|
|
146
|
+
|
|
147
|
+
```js
|
|
148
|
+
import { connectForms, cookiecook } from '@alexsab-ru/scripts';
|
|
149
|
+
|
|
150
|
+
cookiecook();
|
|
151
|
+
connectForms('https://alexsab.ru/lead/test/', function() {
|
|
152
|
+
console.log("sucess lead");
|
|
153
|
+
});
|
|
154
154
|
```
|
package/README_RU.md
CHANGED
|
@@ -1,154 +1,154 @@
|
|
|
1
|
-
# @alexsab-ru/scripts
|
|
2
|
-
|
|
3
|
-
[English](README.md)
|
|
4
|
-
|
|
5
|
-
Общие пакеты для вебсайтов
|
|
6
|
-
|
|
7
|
-
* [Установка](#Установка)
|
|
8
|
-
* [Модуль аналитики](#Модуль-аналитики)
|
|
9
|
-
* [Модуль куков](#Модуль-куков)
|
|
10
|
-
* [Модуль Calltouch](#Модуль-Calltouch)
|
|
11
|
-
* [Модуль для форм](#Модуль-для-форм)
|
|
12
|
-
|
|
13
|
-
## Установка
|
|
14
|
-
```bash
|
|
15
|
-
pnpm i @alexsab-ru/scripts
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
## Модуль аналитики
|
|
19
|
-
|
|
20
|
-
`reachGoal` и `pageView` функции добавляют в `dataLayer` данные с названием цели
|
|
21
|
-
```js
|
|
22
|
-
reachGoal("названиеЦели");
|
|
23
|
-
pageView("названиеЦели");
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
в GTM вы можете использовать их чтобы отправить цели в вашу систему аналитики
|
|
27
|
-
|
|
28
|
-
```js
|
|
29
|
-
{
|
|
30
|
-
event: "reachGoal-названиеЦели",
|
|
31
|
-
eventAction: "названиеЦели"
|
|
32
|
-
}
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
Пример:
|
|
36
|
-
|
|
37
|
-
```js
|
|
38
|
-
import { reachGoal } from '@alexsab-ru/scripts';
|
|
39
|
-
|
|
40
|
-
// Автоматически подключаются из модуля форм
|
|
41
|
-
reachGoal("phone_click");
|
|
42
|
-
reachGoal("phone_copy");
|
|
43
|
-
reachGoal("phone_contextmenu");
|
|
44
|
-
reachGoal("email_click");
|
|
45
|
-
reachGoal("email_copy");
|
|
46
|
-
reachGoal("email_contextmenu");
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
Для аналитики форм вы можете использовать следующие цели
|
|
50
|
-
|
|
51
|
-
```js
|
|
52
|
-
reachGoal("form_open");
|
|
53
|
-
reachGoal("form_click"); // автоматически подключаются из модуля форм
|
|
54
|
-
reachGoal("form_change"); // автоматически подключаются из модуля форм
|
|
55
|
-
reachGoal("form_submit");
|
|
56
|
-
reachGoal("form_required");
|
|
57
|
-
reachGoal("form_error");
|
|
58
|
-
reachGoal("form_success");
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
`getFormDataObject` нужна для отслеживания заявок в Calltouch
|
|
62
|
-
|
|
63
|
-
```js
|
|
64
|
-
import { getFormDataObject } from '@alexsab-ru/scripts';
|
|
65
|
-
|
|
66
|
-
document.querySelectorAll("form").forEach((form) => {
|
|
67
|
-
form.onsubmit = async (event) => {
|
|
68
|
-
|
|
69
|
-
var formData = new FormData(form);
|
|
70
|
-
// ...
|
|
71
|
-
var formDataObj = getFormDataObject(formData, form.id);
|
|
72
|
-
|
|
73
|
-
await fetch("https://example.com/api/lead/", {
|
|
74
|
-
// ...
|
|
75
|
-
})
|
|
76
|
-
.then((res) => res.json())
|
|
77
|
-
.then((data) => {
|
|
78
|
-
if (data.answer == "required") {
|
|
79
|
-
reachGoal("form_required");
|
|
80
|
-
return;
|
|
81
|
-
} else if (data.answer == "error") {
|
|
82
|
-
reachGoal("form_error");
|
|
83
|
-
return;
|
|
84
|
-
} else {
|
|
85
|
-
reachGoal("form_success", formDataObj);
|
|
86
|
-
}
|
|
87
|
-
form.reset();
|
|
88
|
-
})
|
|
89
|
-
.catch((error) => {
|
|
90
|
-
reachGoal("form_error");
|
|
91
|
-
});
|
|
92
|
-
};
|
|
93
|
-
});
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
### Цели могут выполняться такие
|
|
97
|
-
|
|
98
|
-
Взаимодействия с формой
|
|
99
|
-
|
|
100
|
-
- **form_open** – открыл форму
|
|
101
|
-
- **form_click** – кликнул по форме
|
|
102
|
-
- **form_change** – изменения в форме
|
|
103
|
-
- **form_submit** – нажал кнопку Отправить
|
|
104
|
-
- **form_required** – не полное заполнение формы
|
|
105
|
-
- **form_error** – ошибка, данные по какой-то причине не отправились
|
|
106
|
-
- **form_success** – получит положительный ответ от сервера, т.е. данные отправились
|
|
107
|
-
- **form_close** – закрыл форму
|
|
108
|
-
|
|
109
|
-
Взаимодейтсвие с телефоном
|
|
110
|
-
|
|
111
|
-
- **phone_click** — клик по телефону мышкой
|
|
112
|
-
- **phone_contextmenu** — открытие контекстного меню на телефоне правой кнопкой мыши
|
|
113
|
-
- **phone_copy** — копирование выделенного телефона
|
|
114
|
-
|
|
115
|
-
Если где-то есть кликабельный email на странице, то будут отрабатываться цели на нем
|
|
116
|
-
|
|
117
|
-
- **email_click** — клик по email мышкой
|
|
118
|
-
- **email_contextmenu** — открытие контекстного меню на email правой кнопкой мыши
|
|
119
|
-
- **email_copy** — копирование выделенного email
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
## Модуль куков
|
|
123
|
-
|
|
124
|
-
```js
|
|
125
|
-
import { getCookie, setCookie, deleteCookie, cookiecook } from './cookie';
|
|
126
|
-
|
|
127
|
-
getCookie('cookie_name');
|
|
128
|
-
setCookie('cookie_name');
|
|
129
|
-
deleteCookie('cookie_name');
|
|
130
|
-
cookiecook(days);
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
## Модуль Calltouch
|
|
134
|
-
|
|
135
|
-
```js
|
|
136
|
-
import { createRequest } from '@alexsab-ru/scripts';
|
|
137
|
-
|
|
138
|
-
// Отправка заявки на обратный возов в CallTouch
|
|
139
|
-
createRequest("ct_callback", "+7 (987) 654-32-10");
|
|
140
|
-
|
|
141
|
-
// для показа лога нужно использовать третий парамтер
|
|
142
|
-
createRequest("ct_callback", "+7 (987) 654-32-10", true);
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
## Модуль для форм
|
|
146
|
-
|
|
147
|
-
```js
|
|
148
|
-
import { connectForms, cookiecook } from '@alexsab-ru/scripts';
|
|
149
|
-
|
|
150
|
-
cookiecook();
|
|
151
|
-
connectForms('https://alexsab.ru/lead/test/', function() {
|
|
152
|
-
console.log("sucess lead");
|
|
153
|
-
});
|
|
1
|
+
# @alexsab-ru/scripts
|
|
2
|
+
|
|
3
|
+
[English](README.md)
|
|
4
|
+
|
|
5
|
+
Общие пакеты для вебсайтов
|
|
6
|
+
|
|
7
|
+
* [Установка](#Установка)
|
|
8
|
+
* [Модуль аналитики](#Модуль-аналитики)
|
|
9
|
+
* [Модуль куков](#Модуль-куков)
|
|
10
|
+
* [Модуль Calltouch](#Модуль-Calltouch)
|
|
11
|
+
* [Модуль для форм](#Модуль-для-форм)
|
|
12
|
+
|
|
13
|
+
## Установка
|
|
14
|
+
```bash
|
|
15
|
+
pnpm i @alexsab-ru/scripts
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Модуль аналитики
|
|
19
|
+
|
|
20
|
+
`reachGoal` и `pageView` функции добавляют в `dataLayer` данные с названием цели
|
|
21
|
+
```js
|
|
22
|
+
reachGoal("названиеЦели");
|
|
23
|
+
pageView("названиеЦели");
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
в GTM вы можете использовать их чтобы отправить цели в вашу систему аналитики
|
|
27
|
+
|
|
28
|
+
```js
|
|
29
|
+
{
|
|
30
|
+
event: "reachGoal-названиеЦели",
|
|
31
|
+
eventAction: "названиеЦели"
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Пример:
|
|
36
|
+
|
|
37
|
+
```js
|
|
38
|
+
import { reachGoal } from '@alexsab-ru/scripts';
|
|
39
|
+
|
|
40
|
+
// Автоматически подключаются из модуля форм
|
|
41
|
+
reachGoal("phone_click");
|
|
42
|
+
reachGoal("phone_copy");
|
|
43
|
+
reachGoal("phone_contextmenu");
|
|
44
|
+
reachGoal("email_click");
|
|
45
|
+
reachGoal("email_copy");
|
|
46
|
+
reachGoal("email_contextmenu");
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Для аналитики форм вы можете использовать следующие цели
|
|
50
|
+
|
|
51
|
+
```js
|
|
52
|
+
reachGoal("form_open");
|
|
53
|
+
reachGoal("form_click"); // автоматически подключаются из модуля форм
|
|
54
|
+
reachGoal("form_change"); // автоматически подключаются из модуля форм
|
|
55
|
+
reachGoal("form_submit");
|
|
56
|
+
reachGoal("form_required");
|
|
57
|
+
reachGoal("form_error");
|
|
58
|
+
reachGoal("form_success");
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
`getFormDataObject` нужна для отслеживания заявок в Calltouch
|
|
62
|
+
|
|
63
|
+
```js
|
|
64
|
+
import { getFormDataObject } from '@alexsab-ru/scripts';
|
|
65
|
+
|
|
66
|
+
document.querySelectorAll("form").forEach((form) => {
|
|
67
|
+
form.onsubmit = async (event) => {
|
|
68
|
+
|
|
69
|
+
var formData = new FormData(form);
|
|
70
|
+
// ...
|
|
71
|
+
var formDataObj = getFormDataObject(formData, form.id);
|
|
72
|
+
|
|
73
|
+
await fetch("https://example.com/api/lead/", {
|
|
74
|
+
// ...
|
|
75
|
+
})
|
|
76
|
+
.then((res) => res.json())
|
|
77
|
+
.then((data) => {
|
|
78
|
+
if (data.answer == "required") {
|
|
79
|
+
reachGoal("form_required");
|
|
80
|
+
return;
|
|
81
|
+
} else if (data.answer == "error") {
|
|
82
|
+
reachGoal("form_error");
|
|
83
|
+
return;
|
|
84
|
+
} else {
|
|
85
|
+
reachGoal("form_success", formDataObj);
|
|
86
|
+
}
|
|
87
|
+
form.reset();
|
|
88
|
+
})
|
|
89
|
+
.catch((error) => {
|
|
90
|
+
reachGoal("form_error");
|
|
91
|
+
});
|
|
92
|
+
};
|
|
93
|
+
});
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Цели могут выполняться такие
|
|
97
|
+
|
|
98
|
+
Взаимодействия с формой
|
|
99
|
+
|
|
100
|
+
- **form_open** – открыл форму
|
|
101
|
+
- **form_click** – кликнул по форме
|
|
102
|
+
- **form_change** – изменения в форме
|
|
103
|
+
- **form_submit** – нажал кнопку Отправить
|
|
104
|
+
- **form_required** – не полное заполнение формы
|
|
105
|
+
- **form_error** – ошибка, данные по какой-то причине не отправились
|
|
106
|
+
- **form_success** – получит положительный ответ от сервера, т.е. данные отправились
|
|
107
|
+
- **form_close** – закрыл форму
|
|
108
|
+
|
|
109
|
+
Взаимодейтсвие с телефоном
|
|
110
|
+
|
|
111
|
+
- **phone_click** — клик по телефону мышкой
|
|
112
|
+
- **phone_contextmenu** — открытие контекстного меню на телефоне правой кнопкой мыши
|
|
113
|
+
- **phone_copy** — копирование выделенного телефона
|
|
114
|
+
|
|
115
|
+
Если где-то есть кликабельный email на странице, то будут отрабатываться цели на нем
|
|
116
|
+
|
|
117
|
+
- **email_click** — клик по email мышкой
|
|
118
|
+
- **email_contextmenu** — открытие контекстного меню на email правой кнопкой мыши
|
|
119
|
+
- **email_copy** — копирование выделенного email
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
## Модуль куков
|
|
123
|
+
|
|
124
|
+
```js
|
|
125
|
+
import { getCookie, setCookie, deleteCookie, cookiecook } from './cookie';
|
|
126
|
+
|
|
127
|
+
getCookie('cookie_name');
|
|
128
|
+
setCookie('cookie_name');
|
|
129
|
+
deleteCookie('cookie_name');
|
|
130
|
+
cookiecook(days);
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## Модуль Calltouch
|
|
134
|
+
|
|
135
|
+
```js
|
|
136
|
+
import { createRequest } from '@alexsab-ru/scripts';
|
|
137
|
+
|
|
138
|
+
// Отправка заявки на обратный возов в CallTouch
|
|
139
|
+
createRequest("ct_callback", "+7 (987) 654-32-10");
|
|
140
|
+
|
|
141
|
+
// для показа лога нужно использовать третий парамтер
|
|
142
|
+
createRequest("ct_callback", "+7 (987) 654-32-10", true);
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
## Модуль для форм
|
|
146
|
+
|
|
147
|
+
```js
|
|
148
|
+
import { connectForms, cookiecook } from '@alexsab-ru/scripts';
|
|
149
|
+
|
|
150
|
+
cookiecook();
|
|
151
|
+
connectForms('https://alexsab.ru/lead/test/', function() {
|
|
152
|
+
console.log("sucess lead");
|
|
153
|
+
});
|
|
154
154
|
```
|
package/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from './lib/analytics';
|
|
2
|
-
export * from './lib/calltouch';
|
|
3
|
-
export * from './lib/cookie';
|
|
4
|
-
export * from './lib/form';
|
|
1
|
+
export * from './lib/analytics';
|
|
2
|
+
export * from './lib/calltouch';
|
|
3
|
+
export * from './lib/cookie';
|
|
4
|
+
export * from './lib/form';
|