2017-03-22 260 views
0

我使用introjs来构建我的应用程序的游览。我在网上和文档中搜索了很多地方,但似乎找不到在游览中跳过或单击完成时如何运行某个功能的方法。我试图做到这一点,因此存储了cookie,并且直到用户请求或新用户访问该站点时才会再次运行巡视。任何帮助将是伟大的,谢谢!跳过或完成IntroJS回调函数?

$(function(){ 
    var introguide = introJs(); 

    introguide.setOptions({ 
     showProgress: true, 
     steps: [ 
      { hidden } 
     ] 
    }); 

    introguide.start(); 
}); 

回答

1

是的,有一种方法,但有一些注意事项。

首先,在加载intro.js后,您将拥有一个名为introJs的全局属性fn(标准的jquery插件方法)。

通过设置使用introJS.fn下oncomplete()功能的功能,可以在用户点击“完成”按钮执行某些动作。

下面是只显示控制台消息的一个示例:

introJs.fn.oncomplete(function() { console.log("Finished"); });

可正常工作。在包含intro.js库后,您可以随时将其放入脚本中。

“跳过”按钮的功能,但是,只会叫“的onComplete”处理程序,如果你是最后一步。代码的作者观点认为不齐全等不运行的代码,你可以通过这种提取物从代码中看到:

skipTooltipButton.onclick = function() { 
    if (self._introItems.length - 1 == self._currentStep && typeof (self._introCompleteCallback) === 'function') { 
     self._introCompleteCallback.call(self); 
    } 

    _exitIntro.call(self, self._targetElement); 
    }; 

这基本上说,它必须是在此要考虑的最后一步调用完整的回调。

当然,你可以用叉子叉代码和解除限制。我建议如果你打算这样做,创建一个类似于_introlCompleteCallback的_introSkipCallback并调用它,除非在最后一步你可能调用两个函数(如果存在)。

希望这会有所帮助。

2

我要添加评论,但我的代表处是太低了。我不想回答,因为我没有真正测试过,但在2.5.0版(也许以前的版本)中,有onexit函数,我相信它应该处理中断以及单击结束。你尝试过吗?

+0

一直回到v1.0.0。如果用户点击了巡视,它也可以工作。这是OP寻找的答案。 – XaxD

2

我注意到的OnExit将被调用当您单击完成按钮(这是跳跃,直到最后一步)。 onexit似乎没有把这个绑定到introjs上,所以我能够解决这个问题,就像这样完成演练:

// during setup 
introJs.oncomplete(handleOnComplete); 
introJs.onexit(() => handleOnExit(introJs)); 

function handleOnComplete() { 
    console.log(this._currentStep); // this is bound to the introJs object 
} 
function handleOnExit(introJs) { 
    const currentStep = introJs._currentStep; 
    if (currentStep < introJs._options.steps.length) { 
    doSomethingOnSkip(); 
    } 
};