Изменение свойств объекта с последующим вызовом функции внутри пользовательской функции с помощью 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 применяются при первой инициализации виджета, невозможно динамически изменять настройки виджета без выполнения таких действий, как обновление страницы и повторная инициализация виджета. Насколько я вижу из вашего кода, я не думаю, что вы хотите обновлять страницу каждый раз и повторно инициализировать виджет только для того, чтобы применить те настройки, которые вы перечислили выше.