首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >跳过或完成时IntroJS回调函数?

跳过或完成时IntroJS回调函数?
EN

Stack Overflow用户
提问于 2017-03-22 14:27:21
回答 7查看 9.3K关注 0票数 9

我正在使用introjs构建我的应用程序。我在网上和文档中搜索了不少地方,但似乎找不到一种方法,可以在浏览时跳过或单击来运行函数。我试图制作它,这样就可以存储一个cookie,直到用户请求它或一个新用户来到这个站点时,才能再次运行它。任何帮助都会很好,谢谢!

代码语言:javascript
运行
复制
$(function(){
    var introguide = introJs();

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

    introguide.start();
});
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2017-03-22 15:20:12

是的,有一种方法,但有一些警告。

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

通过使用oncomplete()函数在introJS.fn下设置一个函数,您可以在用户单击“Done”按钮时执行一些操作。

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

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

这如预期的那样起作用。您可以在intro.js库包含之后的任何时候将其放入脚本中。

但是,“跳过”按钮功能只在最后一步时调用“oncomplete”处理程序。代码视图的作者不完整,因此不运行代码,从代码中的摘录可以看出:

代码语言:javascript
运行
复制
  skipTooltipButton.onclick = function() {
    if (self._introItems.length - 1 == self._currentStep && typeof (self._introCompleteCallback) === 'function') {
      self._introCompleteCallback.call(self);
    }

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

这基本上意味着必须在最后一步才能考虑调用完整的回调。

当然,您可以分叉代码并删除限制。我建议,如果要这样做,应该以类似于_introSkipCallback的方式创建一个_introlCompleteCallback,并调用它,除非在最后一步,如果存在的话,您可以调用这两个函数。

希望这能有所帮助。

票数 8
EN

Stack Overflow用户

发布于 2018-03-29 13:28:23

此代码允许存储旅游信息。

代码语言:javascript
运行
复制
var introguide = introJs();


window.addEventListener('load', function () {
    var doneTour = localStorage.getItem('MyTour') === 'Completed';
    if (doneTour) {
        return;
    }
    else {
        introguide.start()

        introguide.oncomplete(function () {
            localStorage.setItem('MyTour', 'Completed');
        });

        introguide.onexit(function () {
            localStorage.setItem('MyTour', 'Completed');
        });
    }
});
票数 11
EN

Stack Overflow用户

发布于 2018-04-17 04:20:20

单击“Done”后,对函数使用oncomplete

单击'Skip‘后,对函数使用onexit

额外功能:onchange将记录每一步,这可用于在特定步骤上调用函数

代码语言:javascript
运行
复制
document.getElementById('startButton').onclick = function() {

    // log each step
    introJs().onchange(function(targetElement) {  
      console.log(this._currentStep)
      if (this._currentStep === 3){
        stepThreeFunc()
      }
    }).start()

    // clicking 'Done'
    .oncomplete(function(){
      someFunc()
    })

    // clicking 'Skip'
    .onexit(function(){
      someOtherFunc()
    });
};
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42954494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档