#intro.js
#intro.js
Вопрос:
Мне нужно инициировать изменение страницы перед загрузкой шага. (В частности, мне нужно вызвать меню для открытия перед следующим шагом; следующий шаг выделит это открытое меню.) Для достижения этой цели я использую introJS.onbeforechange(), который работает хорошо. Внутри обработчика событий, когда достигается правильный шаг, меню запускается для открытия. Этот шаг находится в середине шагов на странице. После последнего шага введение продолжается на другой странице.
На последнем шаге страницы, когда я нажимаю стрелку вправо (кнопка «Далее» скрыта), это должно начать вводную часть на новой странице. Но вместо этого генерируется ошибка:
intro.min.js:10 Uncaught TypeError: Cannot read property 'element' of undefined
at J.E (intro.min.js:10)
at J.L (intro.min.js:10)
at l (intro.min.js:10)
Это вызвано существованием обработчика onbeforechange.
Это код в intro.js где это терпит неудачу:
if (typeof (this._introBeforeChangeCallback) !== 'undefined') {
continueStep = this._introBeforeChangeCallback.call(this, nextStep.element);
}
Блок кода внутри onbeforechange никогда не запускается, что означает, что ошибка срабатывает до этого. Если я удалю обработчик onbeforechange, такой ошибки не будет.
Onbeforechange, похоже, не обрабатывает нажатие стрелки вправо на последнем шаге, и нет способа обнаружить это, чтобы устранить ошибку.
Ответ №1:
Ответ немного запутанный. Я добавил обработчик onchange, и когда шаг является последним шагом — и маловероятно, что пользователь вернется к шагу, который вызвал открытие меню, — я удалил обработчик onchange, используя это._introBeforeChangeCallback = undefined:
intro.onchange(function ()
{
// last step
if (this._currentStep === 9)
{
this._introBeforeChangeCallback = undefined;
}
});
Это означает, что если пользователь вернется к предыдущему шагу, меню больше не будет открываться.