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

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

Немного предыстории того, что я делаю: изо всех сил стараюсь использовать API Zendesk для использования веб-виджета на моей веб-странице. По сути, этот веб-виджет настраивается как HelpCenter при запуске, который затем показывает кнопку для живого чата или электронной почты, в зависимости от состояния. Основное рассматриваемое здесь свойство называется «подавить», которое отключает одну из страниц виджетов (чат, электронная почта и справочный центр). И моя цель — сделать так, чтобы эта настраиваемая функция «подавляла» 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.

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

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


person Vincent Solutions    schedule 19.10.2016    source источник
comment
В вашей функции chatPopOut() var window является пустым значением, поскольку оно не передается функцией. Разве это не должен быть chatPopOut(окно)?   -  person Robert Lee    schedule 02.11.2016


Ответы (1)


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

person pretzo246    schedule 04.11.2016