Изменение свойств объекта с последующим вызовом функции внутри пользовательской функции с помощью JavaScript

Название, вероятно, немного грязно. По сути, я пытаюсь создать пользовательскую функцию, которая будет изменять свойства объекта, затем возвращать этот объект и затем вызывать функцию.

Небольшая предыстория того, что я делаю: стараюсь изо всех сил с API Zendesk использовать веб-виджет на моей веб-странице. По сути, этот веб-виджет настроен как центр помощи при запуске, который затем отображает кнопку для чата или электронной почты, в зависимости от состояния. Главное свойство, о котором идет речь, называется "подавить", что отключает одну из страниц виджета (чат, электронная почта и справочный центр). И моя цель - сделать так, чтобы эта пользовательская функция "подавляла" 2 из 3 страниц виджетов, чтобы она показывала только одну. Затем API-функция называется zE.activate() откроет виджет.

Я знаю, что это много текста, позвольте мне показать вам код, который я получил до сих пор:

<script>
function setChatPopOutProps(window) {
    window.zESettings = {
        webWidget: {
            contactForm: {
                suppress: true
            },
            helpCenter: {
                suppress: true
            }
        }
    };
    return window.zESettings;
};
function chatPopOut() {
    setChatPopOutProps(window);
    zE.activate();
};
</script>

Теперь, когда я нажимаю на кнопку, которая имеет chatPopOut() назначенный, zE.activate() работает, так как он открывает виджет, но в основном setChatPopOutProps(window) не похоже на работу.

Я также попробовал следующее:

  • Не возвращается window или же window.zESettings
  • Помещение всего под одну функцию, помещая zE.activate() в конце zESettings или сразу после возвращения window или же window.zESettings

Если вам нужно увидеть виджет в действии, чтобы иметь представление, вы можете увидеть его прямо здесь. Нажмите на зеленую кнопку в правом нижнем углу, введите что-нибудь, и вы увидите всплывающую кнопку контактной формы. Эта кнопка изменяется для кнопки чата, когда доступен живой чат-агент.

Теперь я знаю, что это то, что я должен обычно работать с Zendesk напрямую, что я пытался, но они сказали мне, что нет ничего, что может сделать то, что я пытаюсь сделать, но я действительно чувствую, что это как-то связано с то, как я делаю вещи в JavaScript, а не то, как построен API.

У кого-нибудь есть идея? Я был бы очень признателен.

PS Это мой второй пост, поэтому заранее прошу прощения за ошибки, которые я допустил в этом вопросе.

1 ответ

Решение

К сожалению, оказывается, что то, что вы пытаетесь достичь, просто невозможно. Поскольку zE.settings применяются при первой инициализации виджета, невозможно динамически изменять настройки виджета без выполнения таких действий, как обновление страницы и повторная инициализация виджета. Насколько я вижу из вашего кода, я не думаю, что вы хотите обновлять страницу каждый раз и повторно инициализировать виджет только для того, чтобы применить те настройки, которые вы перечислили выше.

Другие вопросы по тегам