JavaScript – начать предыдущий сеанс чата после перезагрузки страницыJavascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Гость
 JavaScript – начать предыдущий сеанс чата после перезагрузки страницы

Сообщение Гость »


Я написал функцию, которая интегрирует FreshChat на мой сайт.

У меня есть поля ввода в форме, которую я хочу отправить, и после отправки начнется сеанс чата.

Я хочу, чтобы все заполненные входные данные были видны даже после перезагрузки страницы, поэтому в этом случае я сохраняю введенные данные в локальном хранилище. Эта часть работает должным образом.

У меня проблема с другим вариантом использования:

Если я начинаю чат после отправки полей ввода, сеанс чата автоматически сохраняется, НО после перезагрузки страницы он снова возвращается к форме.
>
Чего я хочу добиться: при перезагрузке страницы откройте форму, если сеанс чата не начался, ИЛИ откройте сеанс чата, если чат уже начался.

Второй пример не работает должным образом: открывается форма, а не чат.

Я написал код для поддержки этого поведения, сохраняя логическое значение в локальном хранилище, если сеанс чата начался, но по какой-то причине он не работает. Я предполагаю, что проблема кроется в методе toggleChat().

Может кто-нибудь помочь?
function initFreshChat(token) { пусть _WidgetOpenerDOMEl = null; пусть _WidgetNoticeDOMEl = null; пусть _WidgetPreloadDOMel = null; document.addEventListener("DOMContentLoaded", () => { window.fcWidget.init({ жетон: жетон, хост: "https://wchat.freshchat.com", идентификатор сайта: "LLS", теги: ["lls"], конфигурация: { скрытьFAQ: правда, заголовокProperty: { appName: 'Поддержка клиентов', Цвет фона: '#67B92D' } } }); }); _WidgetOpenerDOMEl = document.getElementById("WidgetOpener"); _WidgetNoticeDOMEl = document.getElementById("WidgetNotice"); _WidgetPreloadDOMel = document.getElementById("WidgetPreload"); функция toggleChat() { if (_WidgetOpenerDOMel.classList.contains("Inactive") || !hasChatStarted()) { _WidgetPreloadDOMel.classList.add("Активный"); _WidgetOpenerDOMel.classList.remove("Неактивно"); _WidgetNoticeDOMel.classList.add("Неактивно"); } else if (window.getComputedStyle(_WidgetOpenerDOMEl).getPropertyValue("display") === "none" || hasChatStarted()) { onChatSessionStart() окно.fcWidget.open(); } } window.toggleChat = toggleChat; document.querySelector(".WidgetNoticeCloser").onclick = () => { _WidgetNoticeDOMel.classList.add("Неактивно"); } document.querySelector(".WidgetNoticeBottomLine span").onclick = () => { _WidgetNoticeDOMel.classList.add("Неактивно"); _WidgetOpenerDOMel.classList.remove("Неактивно"); _WidgetPreloadDOMel.classList.add("Активный"); } document.getElementById("WidgetPreloadHeaderClose").onclick = () => { _WidgetPreloadDOMel.classList.remove("Активен"); _WidgetOpenerDOMel.classList.add("Неактивно"); } let _WidgetOpenerArray = document.querySelectorAll("#WidgetOpener svg"); for (let i = 0; i < _WidgetOpenerArray.length; i++) { _WidgetOpenerArray.onclick = (e) => { е.stopPropagation(); переключитьЧат(); } } document.getElementById("WidgetPreloadBodyAction").onclick = () => { let _WidgetPreloadBodyName = document.querySelector(".WidgetPreloadBodyNameInput"); let _WidgetPreloadBodyEmail = document.querySelector(".WidgetPreloadBodyEmailInput"); let _WidgetPreloadBodyPhone = document.querySelector(".WidgetPreloadBodyPhoneInput"); let _WidgetPreloadBodyOrder = document.querySelector(".WidgetPreloadBodyOrderInput"); let _WidgetPreloadBodyNameInput = document.querySelector("#WidgetPreloadBodyNameInput"); let _WidgetPreloadBodyEmailInput = document.querySelector("#WidgetPreloadBodyEmailInput"); let _WidgetPreloadBodyPhoneInput = document.querySelector("#WidgetPreloadBodyPhoneInput"); let _WidgetPreloadBodyOrderInput = document.querySelector("#WidgetPreloadBodyOrderInput"); пусть _Status = правда; пусть _InvalidInput = ноль; если (_WidgetPreloadBodyNameInput.value.length { _WidgetPreloadBodyName.classList.remove("Неверно"); } } if (_WidgetPreloadBodyEmailInput.value.length { _WidgetPreloadBodyEmail.classList.remove("Неверно"); } } если (_Status) { _WidgetPreloadDOMel.classList.remove("Активен"); _WidgetOpenerDOMel.style.display = "нет"; setInputValuesInLocalStorage(); window.fcWidget.user.setProperties({ firstName: _WidgetPreloadBodyNameInput.value, orderId: _WidgetPreloadBodyOrderInput.value, электронная почта: _WidgetPreloadBodyEmailInput.value, телефон: _WidgetPreloadBodyPhoneInput.value }); окно.fcWidget.open(); document.getElementById("fc_frame").classList.add("Активный"); } еще { _InvalidInput.focus(); } } } const FSInterval = setInterval(function () { if (typeof FS !== 'неопределено' && FS.getCurrentSessionURL && typeof window.fcWidget !== 'неопределено' && окно.fcWidget.user) { window.fcWidget.user.setProperties({ FullStorySessionUrl: FS.getCurrentSessionURL(), FullStorySessionId: FS.getCurrentSession() }); очиститьИнтервал (FSInterval); если (window.OPTIMIZE_EXPERIMENTS) { window.OPTIMIZE_EXPERIMENTS.forEach(функция (эксперимент) { FS.event('Оптимизировать эксперимент', { имя_эксперимента_строка: эксперимент.id, вариация_значение_стр: эксперимент.вариант }); }); } } }, 1500); //автоматическая очистка интервала, если фс не загружается в течение 13 секунд setTimeout(clearInterval.bind(this, FSInterval), 13000); функция setInputValuesInLocalStorage() { const _WidgetPreloadBodyNameInput = document.querySelector("#WidgetPreloadBodyNameInput"); const _WidgetPreloadBodyEmailInput = document.querySelector("#WidgetPreloadBodyEmailInput"); const _WidgetPreloadBodyPhoneInput = document.querySelector("#WidgetPreloadBodyPhoneInput"); const _WidgetPreloadBodyOrderInput = document.querySelector("#WidgetPreloadBodyOrderInput"); localStorage.setItem("nameInputValue", _WidgetPreloadBodyNameInput.value); localStorage.setItem("emailInputValue", _WidgetPreloadBodyEmailInput.value); localStorage.setItem("phoneInputValue", _WidgetPreloadBodyPhoneInput.value); localStorage.setItem("orderInputValue", _WidgetPreloadBodyOrderInput.value); } // Функция для получения входных значений из локального хранилища и заполнения полей ввода функция populateInputFieldsFromLocalStorage() { const _WidgetPreloadBodyNameInput = document.querySelector("#WidgetPreloadBodyNameInput"); const _WidgetPreloadBodyEmailInput = document.querySelector("#WidgetPreloadBodyEmailInput"); const _WidgetPreloadBodyPhoneInput = document.querySelector("#WidgetPreloadBodyPhoneInput"); const _WidgetPreloadBodyOrderInput = document.querySelector("#WidgetPreloadBodyOrderInput"); _WidgetPreloadBodyNameInput.value = localStorage.getItem("nameInputValue") || ""; _WidgetPreloadBodyEmailInput.value = localStorage.getItem("emailInputValue") || ""; _WidgetPreloadBodyPhoneInput.value = localStorage.getItem("phoneInputValue") || ""; _WidgetPreloadBodyOrderInput.value = localStorage.getItem("orderInputValue") || ""; } // Добавляем прослушиватель событий в поля ввода для обновления локального хранилища при изменении значений const inputElements = document.querySelectorAll(".WidgetPreloadBodyInput"); inputElements.forEach(функция (вход) { input.addEventListener('input', setInputValuesInLocalStorage); }); // Вызов populateInputFieldsFromLocalStorage при загрузке страницы для заполнения полей ввода сохраненными значениями document.addEventListener("DOMContentLoaded", () => { populateInputFieldsFromLocalStorage(); }); // Функция для установки флага в локальном хранилище при запуске чата функция setChatStartedFlag() { localStorage.setItem("chatStarted", "истина"); } // Функция проверки, начался ли чат функция hasChatStarted() { return localStorage.getItem("chatStarted") === "true"; } функция onChatSessionStart() { установитьChatStartedFlag(); }
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ, комментарий, отзыв

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Javascript»