2017-03-22 147 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(); 
    } 
};