我正在使用introjs构建我的应用程序。我在网上和文档中搜索了不少地方,但似乎找不到一种方法,可以在浏览时跳过或单击来运行函数。我试图制作它,这样就可以存储一个cookie,直到用户请求它或一个新用户来到这个站点时,才能再次运行它。任何帮助都会很好,谢谢!
$(function(){
var introguide = introJs();
introguide.setOptions({
showProgress: true,
steps: [
{ hidden }
]
});
introguide.start();
});
发布于 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”处理程序。代码视图的作者不完整,因此不运行代码,从代码中的摘录可以看出:
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,并调用它,除非在最后一步,如果存在的话,您可以调用这两个函数。
希望这能有所帮助。
发布于 2018-03-29 13:28:23
此代码允许存储旅游信息。
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');
});
}
});
发布于 2018-04-17 04:20:20
单击“Done”后,对函数使用oncomplete
单击'Skip‘后,对函数使用onexit
额外功能:onchange
将记录每一步,这可用于在特定步骤上调用函数
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()
});
};
https://stackoverflow.com/questions/42954494
复制相似问题