{
    "version": "https:\/\/jsonfeed.org\/version\/1",
    "title": "Блог Чуденкова Алексея, заметки с тегом: js",
    "home_page_url": "https:\/\/blog.chudenkov.ru\/tags\/js\/",
    "feed_url": "https:\/\/blog.chudenkov.ru\/tags\/js\/json\/",
    "icon": "https:\/\/blog.chudenkov.ru\/user\/userpic@2x.jpg",
    "author": {
        "name": "Чуденков Алексей",
        "url": "https:\/\/blog.chudenkov.ru\/",
        "avatar": "https:\/\/blog.chudenkov.ru\/user\/userpic@2x.jpg"
    },
    "items": [
        {
            "id": "77",
            "url": "https:\/\/blog.chudenkov.ru\/all\/js-risuem-logotip\/",
            "title": "JS: Рисуем логотип",
            "content_html": "<p>Я бродил по Codepen в поисках интересных решений для анимаций форм и объектов на CSS и наткнулся на клёвую реализацию анимации SVG логотипа. Принцип прост — указываем для каждого элемента path в SVG класс и он будет анимирован. Можно на прелоадер поставить, будет эффектно.<\/p>\n<p class=\"codepen\" data-height=\"377\" data-theme-id=\"light\" data-default-tab=\"html,result\" data-user=\"alexey-chudenkov\" data-slug-hash=\"KKpqKwd\" style=\"height: 377px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;\" data-pen-title=\"Animated SVG Logo\">\r\n  <span>See the Pen <a href=\"https:\/\/codepen.io\/alexey-chudenkov\/pen\/KKpqKwd\">\r\n  Animated SVG Logo<\/a> by Alexey  Chudenkov (<a href=\"https:\/\/codepen.io\/alexey-chudenkov\">@alexey-chudenkov<\/a>)\r\n  on <a href=\"https:\/\/codepen.io\">CodePen<\/a>.<\/span>\r\n<\/p>\n<script async src=\"https:\/\/static.codepen.io\/assets\/embed\/ei.js\"><\/script>\n",
            "date_published": "2020-02-29T11:50:49+03:00",
            "date_modified": "2020-02-29T13:22:48+03:00",
            "_date_published_rfc2822": "Sat, 29 Feb 2020 11:50:49 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "77",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": []
            }
        },
        {
            "id": "75",
            "url": "https:\/\/blog.chudenkov.ru\/all\/jquery-zapretit-vvodit-probely-v-e-mail\/",
            "title": "jQuery: запретить вводить пробелы в E-Mail",
            "content_html": "<p>Защита от дурака, который может скопировать и вставить почту с пробелами или хуже того ещё и написать её с пробелами.<\/p>\n<pre class=\"e2-text-code\"><code>$(&quot;#input_Id&quot;).change(function()\r\n     $(this).val($(this).val().replace(\/ +\/g, ''))\r\n});<\/code><\/pre>",
            "date_published": "2020-02-10T14:05:01+03:00",
            "date_modified": "2020-02-10T14:05:21+03:00",
            "_date_published_rfc2822": "Mon, 10 Feb 2020 14:05:01 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "75",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "70",
            "url": "https:\/\/blog.chudenkov.ru\/all\/shopify-check-user-age-before-shopping\/",
            "title": "Shopify: check user age before shopping",
            "content_html": "<p>Есть продукты, которые можно продавать в США только лицам старше 21 года, да и то, не во всех штатах. Сам шопифай такого решения разумеется не имеет, поэтому появилось следующее решение, которое работает так: если нет соответствующей куки, то показываем пользователю предупреждение (предупреждение сами верстаем), а если кука есть, то не показываем пользователю предупреждение N-дней. Если пользователю нет 21 года, то отправляем его в магазин лего и куку не присваиваем.<\/p>\n<p>Я запихал текст предупреждения в переменные, чтобы их можно было просто отредактировать.<\/p>\n<pre class=\"e2-text-code\"><code>{% capture warning_header %}\r\nTHE SITE IS ONLY AVAILABLE TO PERSONS OVER 21 YEARS OF AGE.\r\n{% endcapture %}\r\n\r\n{% capture warning_question %}\r\nARE YOU'RE 21 YEARS OLD?\r\n{% endcapture %}<\/code><\/pre><p>Далее вёрстка самого предупреждения, который нужно запихать в theme.liquid сразу после body. Рекомендую подключить сниппетом, чтобы не засорять шаблон кучей строк.<\/p>\n<pre class=\"e2-text-code\"><code>&lt;div class=&quot;warning&quot; id=&quot;warning&quot;&gt;\r\n    &lt;div class=&quot;warning-popup&quot; id=&quot;popup&quot;&gt;\r\n        &lt;div class=&quot;logo&quot;&gt;\r\n            &lt;img src=&quot;https:\/\/cdn.shopify.com\/s\/files\/logo.svg&quot; alt=&quot;logo&quot;&gt;\r\n        &lt;\/div&gt;\r\n        &lt;div&gt;{{ warning_header }}&lt;\/div&gt;\r\n        &lt;div class=&quot;warning-question&quot;&gt;{{ warning_question }}&lt;\/div&gt;\r\n        &lt;div class=&quot;btns&quot;&gt;\r\n            &lt;a href=&quot;https:\/\/lego.com\/&quot;&gt;&lt;button class=&quot;btn&quot;&gt;No&lt;\/button&gt;&lt;\/a&gt;\r\n            &lt;button class=&quot;btn&quot; onclick=&quot;ageCheck()&quot;&gt;Yes&lt;\/button&gt;\r\n        &lt;\/div&gt;\r\n    &lt;\/div&gt;\r\n&lt;\/div&gt;<\/code><\/pre><p>Далее сам скрипт, логику работы описал выше.<\/p>\n<pre class=\"e2-text-code\"><code>&lt;script&gt;\r\n function ageCheck() {\r\n     var days = 14; \/\/количество дней, через которое спросим возраст снова\r\n     var date = new Date();\r\n     date.setTime(date.getTime()+(days*24*60*60*1000));\r\n     var expires = &quot;; expires=&quot;+date.toGMTString();\r\n     document.cookie = 'isAnAdult=true;'+expires+&quot;; path=\/&quot;;\r\n     location.reload();\r\n   };\r\n  function readCookie(name) {\r\n    var nameEQ = name + &quot;=&quot;;\r\n    var ca = document.cookie.split(';');\r\n    for(var i=0;i &lt; ca.length;i++) {\r\n      var c = ca[i];\r\n      while (c.charAt(0)==' ') c = c.substring(1,c.length);\r\n      if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);\r\n    }\r\n    return null;\r\n  };\r\n  var isAnAdult = readCookie('isAnAdult');\r\n  if (isAnAdult) {\r\n    document.write(&quot;&lt;style&gt; #warning { display: none; overflow:hidden; }&lt;\/style&gt;&quot;);\r\n  };\r\n&lt;\/script&gt;<\/code><\/pre>",
            "date_published": "2020-01-31T03:26:16+03:00",
            "date_modified": "2020-01-31T03:25:28+03:00",
            "_date_published_rfc2822": "Fri, 31 Jan 2020 03:26:16 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "70",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "69",
            "url": "https:\/\/blog.chudenkov.ru\/all\/js-opredelyaem-vklyuchyon-caps-lock-ili-net\/",
            "title": "JS: Определяем включён Caps Lock или нет",
            "content_html": "<p>На W3C нашёл простой и отличный способ определения капса. Для чего? Всё для UI\/UX! Особенно, если аудитория слегка деревянная. Итак, реализация:<\/p>\n<pre class=\"e2-text-code\"><code>var input = document.getElementById(&quot;myInput&quot;);\r\nvar text = document.getElementById(&quot;text&quot;);\r\ninput.addEventListener(&quot;keyup&quot;, function(event) {\r\n  if (event.getModifierState(&quot;CapsLock&quot;)) {\r\n    text.style.display = &quot;block&quot;;\r\n  } else {\r\n    text.style.display = &quot;none&quot;\r\n  }\r\n});<\/code><\/pre><div class=\"e2-text-picture\">\n<img src=\"https:\/\/blog.chudenkov.ru\/pictures\/Screenshot_3.png\" width=\"461\" height=\"248\" alt=\"\" \/>\n<\/div>\n",
            "date_published": "2020-01-15T22:46:54+03:00",
            "date_modified": "2020-01-15T22:46:46+03:00",
            "image": "https:\/\/blog.chudenkov.ru\/pictures\/Screenshot_3.png",
            "_date_published_rfc2822": "Wed, 15 Jan 2020 22:46:54 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "69",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": [
                    "https:\/\/blog.chudenkov.ru\/pictures\/Screenshot_3.png"
                ]
            }
        },
        {
            "id": "68",
            "url": "https:\/\/blog.chudenkov.ru\/all\/simplacms-podschyot-kolichestva-vvedyonnyh-simvolov-v-polya-seo\/",
            "title": "SimplaCMS: Подсчёт количества введённых символов в поля SEO-параметров",
            "content_html": "<p>Сеошники знают, что есть правила, которые ограничивают нам ввод длинных title или description. Чтобы не кидать каждый раз в Sublime для подсчёта символов, я набросал простенький скрипт, который показывает текущее значение каждого поля SEO-параметров.<\/p>\n<p>Потестить можно на категориях, для которых в первую очередь и писался сам скрипт. Для этого откроем \/simpla\/design\/html\/category.tpl и заменим блок<\/p>\n<!-- Параметры страницы --><p>на код ниже:<\/p>\n<pre class=\"e2-text-code\"><code>&lt;div class=&quot;block layer&quot;&gt;\r\n&lt;h2&gt;Параметры страницы&lt;\/h2&gt;\r\n&lt;ul&gt;\r\n\t&lt;li&gt;&lt;label id=&quot;url_count&quot;class=property&gt;Адрес&lt;\/label&gt;&lt;div class=&quot;page_url&quot;&gt;\/catalog\/&lt;\/div&gt;&lt;input name=&quot;url&quot; class=&quot;page_url&quot; type=&quot;text&quot; value=&quot;{$category-&gt;url|escape}&quot; id=&quot;url_source&quot; \/&gt;&lt;\/li&gt;\r\n\t&lt;li&gt;&lt;label id=&quot;title_count&quot; class=property&gt;Заголовок&lt;\/label&gt;&lt;input name=&quot;meta_title&quot; class=&quot;simpla_inp&quot; type=&quot;text&quot; value=&quot;{$category-&gt;meta_title|escape}&quot; id=&quot;title_source&quot; \/&gt;&lt;\/li&gt;\r\n\t&lt;li&gt;&lt;label id=&quot;keys_count&quot; class=property&gt;Ключевые слова&lt;\/label&gt;&lt;input name=&quot;meta_keywords&quot; class=&quot;simpla_inp&quot; type=&quot;text&quot; value=&quot;{$category-&gt;meta_keywords|escape}&quot; id=&quot;keys_source&quot; \/&gt;&lt;\/li&gt;\r\n\t&lt;li&gt;&lt;label id=&quot;description_count&quot; class=property&gt;Описание&lt;\/label&gt;&lt;textarea name=&quot;meta_description&quot; class=&quot;simpla_inp&quot; id=&quot;description_source&quot; &gt;{$category-&gt;meta_description|escape}&lt;\/textarea&gt;&lt;\/li&gt;\r\n\t\t\t&lt;\/ul&gt;\r\n&lt;script&gt;\r\nvar urlname = document.getElementById(&quot;url_source&quot;);\r\nvar urlcount = document.getElementById(&quot;url_count&quot;);\r\nvar titlename = document.getElementById(&quot;title_source&quot;);\r\nvar titlecount = document.getElementById(&quot;title_count&quot;);\r\nvar keywordname = document.getElementById(&quot;keys_source&quot;);\r\nvar keywordscount = document.getElementById(&quot;keys_count&quot;); \r\nvar descriptionname = document.getElementById(&quot;description_source&quot;);\r\nvar descriptioncount = document.getElementById(&quot;description_count&quot;);                                   \r\nwindow.onload = urlCount();\r\nwindow.onload = titleCount();\r\nwindow.onload = keywordsCount();\r\nwindow.onload = descriptionCount();\r\nurlname.oninput = urlCount;\r\ntitlename.oninput = titleCount;\r\nkeywordname.oninput = keywordsCount;\r\ndescriptionname.oninput = descriptionCount;                  \r\nfunction urlCount() {\r\nvar x = urlname.value;\r\nurlcount.innerHTML = &quot;Адрес (&quot; + x.length + &quot;)&quot;;\r\n}             \r\nfunction titleCount() {\r\nvar y = titlename.value;\r\ntitlecount.innerHTML = &quot;Заголовок (&quot; + y.length + &quot;)&quot;;\r\n}                  \r\nfunction keywordsCount() {\r\nvar z = keywordname.value;\r\nkeywordscount.innerHTML = &quot;Ключевые слова (&quot; + z.length + &quot;)&quot;;\r\n}\r\nfunction descriptionCount() {\r\nvar xx = descriptionname.value;\r\ndescriptioncount.textContent = &quot;Описание (&quot; + xx.length + &quot;)&quot;;\r\n}                 \r\n&lt;\/script&gt;\r\n&lt;\/div&gt;<\/code><\/pre><div class=\"e2-text-picture\">\n<img src=\"https:\/\/blog.chudenkov.ru\/pictures\/Screenshot_2.png\" width=\"1185\" height=\"489\" alt=\"\" \/>\n<\/div>\n",
            "date_published": "2020-01-14T13:58:34+03:00",
            "date_modified": "2020-01-14T14:01:34+03:00",
            "image": "https:\/\/blog.chudenkov.ru\/pictures\/Screenshot_2.png",
            "_date_published_rfc2822": "Tue, 14 Jan 2020 13:58:34 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "68",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": [
                    "https:\/\/blog.chudenkov.ru\/pictures\/Screenshot_2.png"
                ]
            }
        },
        {
            "id": "41",
            "url": "https:\/\/blog.chudenkov.ru\/all\/otslezhivanie-celey-dlya-tildy\/",
            "title": "Tilda: Отслеживание целей в Яндекс Метрике и Google Analytics",
            "content_html": "<ol start=\"1\">\n<li>Заходим в Метрику, создаем цели.<\/li>\n<li>Заходим в Google Analytics, создаем цели.<\/li>\n<li>Заходим на сайт, вставляем в footer \/ custom.js:<\/li>\n<\/ol>\n<pre class=\"e2-text-code\"><code>&lt;script type=&quot;text\/javascript&quot;&gt;\r\n$(document).ready(function(){\r\n    $('#ID_BLOCK a').click(function(){ \/\/ Надо указать ID блока, в котором расположена ссылка\r\n        yaCounterXXXXXXXX.reachGoal('ORDER');  \/\/ Надо указать название цели и номер счётчика Метрики\r\n        gtag('event', 'OrderClick', { 'event_category': 'Order', 'event_action': 'Order Click', }); \/\/ Надо указать название и тип события для Analytics\r\n        console.log('Data was sent'); \/\/ Это отладка для консоли. Если в консоли выводится, то всё ок, цели работают.\r\n    });\r\n});\r\n&lt;\/script&gt;<\/code><\/pre>",
            "date_published": "2018-05-25T22:42:42+03:00",
            "date_modified": "2018-05-26T00:37:33+03:00",
            "_date_published_rfc2822": "Fri, 25 May 2018 22:42:42 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "41",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "37",
            "url": "https:\/\/blog.chudenkov.ru\/all\/js-odna-vsplyvayuschaya-forma-i-raznye-zagolovki\/",
            "title": "JS: Одна всплывающая форма и разные заголовки",
            "content_html": "<p>Каждый раз, создавая или оптимизируя сайты, всегда сталкиваюсь с задачами, которые можно и нужно оптимизировать, сокращать, минимизировать и так далее. Например, вы хотите сделать на лендинге 5 форм, у которых по сути отличается только заголовок. Неужели вы будете лепить все 5 форм? Не надо! Можно обойтись несколькими строчками кода.<\/p>\n<ol start=\"1\">\n<li>Дадим заголовку вашей формы идентификатор<\/li>\n<\/ol>\n<pre class=\"e2-text-code\"><code>&lt;h2 id=&quot;windowHeader&quot;&gt;Ваш заголовок формы&lt;\/h2&gt;<\/code><\/pre><ol start=\"2\">\n<li>Повесим на ваши кнопки названия заголовка каждой из них. Например, для обратного звонка — «Обратный звонок», для бесплатной консультации — «Бесплатная консультация»:<\/li>\n<\/ol>\n<pre class=\"e2-text-code\"><code>&lt;a onClick=&quot;windowHeader('Бесплатная консультация');&quot;&gt;Заказать бесплатную консультацию&lt;\/a&gt;\r\n&lt;a onClick=&quot;windowHeader('Обратный звонок');&quot;&gt;Заказать звонок&lt;\/a&gt;<\/code><\/pre><ol start=\"3\">\n<li>Создадим JS функцию, которая при нажатии той или иной кнопки будет подменять нам название формы:<\/li>\n<\/ol>\n<pre class=\"e2-text-code\"><code>function windowHeader(name) {\r\n          document.getElementById('windowHeader').innerHTML = name;\r\n}<\/code><\/pre><ol start=\"4\">\n<li>Жамкаем по кнопкам, смотрим на форму.<\/li>\n<\/ol>\n",
            "date_published": "2018-05-06T03:06:39+03:00",
            "date_modified": "2018-05-06T03:07:34+03:00",
            "_date_published_rfc2822": "Sun, 06 May 2018 03:06:39 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "37",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "30",
            "url": "https:\/\/blog.chudenkov.ru\/all\/jivosite-otklyuchit-zvuk-poyavleniya-okna\/",
            "title": "JivoSite: отключить звук появления окна",
            "content_html": "<p>В JivoSite есть раздражающий звук, который реально <s>заёбывает<\/s> своим навязчивым пиканием. Покопавшись в настройках, я не нашёл никакого функционала, который бы позволил мне это отключить. Странно, что разработчики об этом не позаботились.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/blog.chudenkov.ru\/pictures\/42159_3_640x480.jpeg\" width=\"640\" height=\"480\" alt=\"\" \/>\n<\/div>\n<p>Что ж, будем решать через DOM:<\/p>\n<p>Открываем существующий код JivoSite и добавим в него пару строчек:<\/p>\n<pre class=\"e2-text-code\"><code>&lt;script type='text\/javascript'&gt;\r\n(function() { var widget_id = 'YOUR_ID'; var d = document; var w = window;\r\n    function l() { var s = document.createElement('script');\r\n        s.type = 'text\/javascript';\r\n        s.async = true;\r\n        s.src = '\/\/code.jivosite.com\/script\/widget\/' + widget_id; var ss = document.getElementsByTagName('script')[0];\r\n        ss.parentNode.insertBefore(s, ss); } if (d.readyState == 'complete') { l(); } else { if (w.attachEvent) { w.attachEvent('onload', l); } else { w.addEventListener('load', l, false); } } })();\r\n\r\n\/\/ Ниже код, который нужно добавить после вашего скрипта\r\nfunction jivo_onLoadCallback() {\r\ndocument.jivo_container.HTMLAudioElement.prototype.play = function () {};\r\n}\r\n&lt;\/script&gt;<\/code><\/pre><p>После этого никакие звуки не будут раздражать вас и вашего пользователя.<\/p>\n",
            "date_published": "2018-04-17T01:11:21+03:00",
            "date_modified": "2018-04-17T01:15:48+03:00",
            "image": "https:\/\/blog.chudenkov.ru\/pictures\/42159_3_640x480.jpeg",
            "_date_published_rfc2822": "Tue, 17 Apr 2018 01:11:21 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "30",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": [
                    "https:\/\/blog.chudenkov.ru\/pictures\/42159_3_640x480.jpeg"
                ]
            }
        },
        {
            "id": "29",
            "url": "https:\/\/blog.chudenkov.ru\/all\/fancybox-3-moi-nastroyki\/",
            "title": "JS: Настройки Fancybox 3",
            "content_html": "<p>Чтобы не писать каждый раз, запишу здесь:<\/p>\n<pre class=\"e2-text-code\"><code>$(&quot;[data-fancybox]&quot;).fancybox({\r\n    loop: true,\r\n    gutter: 30,\r\n    buttons: [\r\n        &quot;zoom&quot;,\r\n        &quot;share&quot;,\r\n        &quot;slideShow&quot;,\r\n        &quot;fullScreen&quot;,\r\n        &quot;thumbs&quot;,\r\n        &quot;close&quot;\r\n    ],\r\n    protect: true,\r\n    transitionEffect: &quot;circular&quot;,\r\n    slideShow: {\r\n        autoStart: true,\r\n        speed: 5000\r\n    },\r\n    lang: &quot;ru&quot;,\r\n    i18n: {\r\n        ru: {\r\n            CLOSE: &quot;Закрыть&quot;,\r\n            NEXT: &quot;Вперед&quot;,\r\n            PREV: &quot;Назад&quot;,\r\n            ERROR: &quot;Ошибка загрузки. &lt;br\/&gt; Повторите запрос позднее.&quot;,\r\n            PLAY_START: &quot;Начать демонстрацию&quot;,\r\n            PLAY_STOP: &quot;Приостановить демонстрацию&quot;,\r\n            FULL_SCREEN: &quot;На полный экран&quot;,\r\n            THUMBS: &quot;Миниатюры&quot;,\r\n            DOWNLOAD: &quot;Скачать&quot;,\r\n            SHARE: &quot;Поделиться&quot;,\r\n            ZOOM: &quot;Увеличить&quot;\r\n        },\r\n    }\r\n};<\/code><\/pre>",
            "date_published": "2018-04-16T23:59:06+03:00",
            "date_modified": "2018-05-08T15:42:01+03:00",
            "_date_published_rfc2822": "Mon, 16 Apr 2018 23:59:06 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "29",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "26",
            "url": "https:\/\/blog.chudenkov.ru\/all\/veshaem-sobytiya-ga-cherez-dom-dlya-plagina-wordpress-contact-fo\/",
            "title": "JS: Вешаем события GA через DOM для плагина Wordpress Contact Form 7",
            "content_html": "<p>После опыта с LP Generator, нашёл такое же решение для самого популярного плагина Wordpress Contact Form 7. Согласно официальной документации плагина, начиная с версии 7.5.0 они убрали возможность установки событий onsubmit и onclick через интерфейс админки. И предлагают вешать его через скрипт. Пример:<\/p>\n<pre class=\"e2-text-code\"><code>&lt;script&gt;\r\ndocument.addEventListener( 'wpcf7mailsent', function( event ) {\r\n    yaCounterXXXXXX.reachGoal('ORDER'); gtag('event', 'order', { 'event_category': 'ORDER', 'event_action': 'ORDER', });\r\n}, false );\r\n&lt;\/script&gt;<\/code><\/pre><p>Зачем убрали — не понятно, но точно ясно, что усложнили жизнь новичкам.<\/p>\n",
            "date_published": "2018-04-04T23:42:15+03:00",
            "date_modified": "2018-05-08T15:43:37+03:00",
            "_date_published_rfc2822": "Wed, 04 Apr 2018 23:42:15 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "26",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        }
    ],
    "_e2_version": 3365,
    "_e2_ua_string": "E2 (v3365; Aegea)"
}