【问题标题】:onbeforechange results in error after last step in intro.js在 intro.js 的最后一步之后,onbeforechange 导致错误
【发布时间】:2020-11-27 21:25:46
【问题描述】:

我需要在加载步骤之前触发对页面的更改。 (具体来说,我需要在下一步之前触发一个菜单打开;下一步将突出显示该打开的菜单。)我正在使用 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 似乎无法处理在最后一步点击右箭头,并且无法检测到这一点来消除错误。

【问题讨论】:

    标签: intro.js


    【解决方案1】:

    答案有点笨拙。我添加了一个 onchange 处理程序,当该步骤是最后一步时 - 用户不太可能返回触发菜单打开的步骤 - 我已使用 this._introBeforeChangeCallback = undefined 删除了 onchange 处理程序:

        intro.onchange(function ()
        {
            // last step 
            if (this._currentStep === 9) 
            {
             this._introBeforeChangeCallback = undefined;
            }
        });
    

    这确实意味着如果用户返回上一步,菜单将不再打开。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-18
      • 1970-01-01
      • 1970-01-01
      • 2016-08-31
      相关资源
      最近更新 更多