首页 > 解决方案 > 按钮和箭头在 intro.js 中有不同的导航行为

问题描述

使用onbeforechange,我触发了对页面的更改——打开一个菜单——以便该步骤可以在游览期间突出显示该菜单。当我使用箭头进行导航时,效果很好:菜单完全呈现,整个菜单突出显示,工具提示显示在一边。

但是,当我使用“下一步”按钮(或返回,如果返回)时,这不能以 2 种不同的方式正常工作: 1 - 菜单未完全呈现。显示菜单 div,但不显示菜单项。菜单显示为空。2 - 工具提示出现在(空)菜单上方,而不是在旁边。

似乎存在时间问题/竞争条件,在使用按钮时,在菜单可以完全呈现​​之前触发该步骤,但在使用箭头时不会。

知道原因是什么或如何解决。

==更新==我的理论是正确的。我设法通过修改下一个和上一个按钮的 onclick 处理程序并将对 _nextStep 和 _previousStep 的调用放在 setTimeout 函数中来“修复”这个问题,即使只有 50 毫秒,如下所示:

    nextTooltipButton.onclick = function() {
    if (self._introItems.length - 1 !== self._currentStep) {
        
        setTimeout(function()
        {       
          _nextStep.call(self);
        },
        50);
    }
  };

但是,我希望通过简单地覆盖这些 onclick 处理程序所在的现有函数来进行此更改,但该函数似乎是私有的并且不能被覆盖。(如果有办法做到这一点,请告诉我。)相反,我必须获取 intro.js 文件的本地副本并对其进行修改。

最好将这个微小的更改添加到主分支,这对性能没有明显的影响。

仍在寻找更好的答案。

标签: intro.js

解决方案


推荐阅读