Bootstrap tour необходимо очистить кеш, чтобы снова работать

Я пытаюсь использовать начальный тур в моем веб-приложении. Все работало нормально в первые 5 минут, и я видел шаги всплывающего окна, первый раз и единственный раз. Тогда всплывающие окна просто исчезли позже. Я перепробовал много способов, даже перезапустил компьютер, и оказалось, что каждый раз, когда я очищаю кеш браузера, он работает один раз. Затем мне нужно очистить кеш еще раз.

Код выглядит так:

    helpButton.click(function() {
    if (window.steps === undefined)
        return;
    alert("element: " + window.steps[0].element + ", title: " + window.steps[0].title + ", content: " + window.steps[0].content + ", val: " + $(window.steps[0].element).val());
    var tour = new Tour({
        steps: window.steps
    });
    tour.init();
    tour.start();
    alert("finished.");
});

И шаги выглядят так:

<script type="text/javascript">
var steps = [
    { element: "#choose-team", title: "快速编辑", content: "可以在这里直接编辑标题,自动保存", position: "n" },
    { element: ".hidden-editor:first", title: "快速编辑2", content: "可以在这里直接编辑标题,自动保存2", position: "n" }
];

  1. Все оповещения () в порядке, а данные по шагам в порядке (поэтому он может запускаться хотя бы один раз).
  2. Все официальные примеры в порядке на их сайте.
  3. И IE, и Chrome имеют одинаковую проблему на моем ПК.
  4. Tour js и css не повреждены (загружается с Bootstraptour.com).

Любая идея? Благодарю.

4 ответа

Решение

Я просто нашел другой способ обойти проблему, если хранение является обязательным. Использование restart () вместо start () также может решить проблему. И вместо restart () есть начало (true), но оно напрямую переходит к последнему шагу.

Похоже, этот тур, по умолчанию, предназначен для работы как разовый тур. Например, когда что-то на вашем сайте обновляется, тур должен автоматически запускаться один раз, чтобы показать обновление, и больше никогда не будет беспокоить пользователя.

Чтобы сделать это повторяемым туром, отключите хранилище с помощью "storage: false" в опции или используйте restart () вместо start ().

Эта проблема связана с конфигурацией библиотек, поскольку по умолчанию данные хранятся в интерфейсе хранилища DOM.

DOCS

Опция: storage

По умолчанию: window.localStorage

Описание:

Система хранения, которую вы хотите использовать. Это могут быть объекты window.localStorage, window.sessionStorage или ваш собственный объект. Вы можете установить эту опцию как false, чтобы отключить постоянство хранилища (обзор начинается с каждой загрузки страницы).

FIX

var tour = new Tour({
    steps: window.steps,
    storage: false
});

Если вы хотите работать постоянно. Создайте экземпляр как это

    var tour = new Tour({
    storage: false,
    steps: [],
});

Затем вызовите эти функции нажатием одной кнопки.

$(document).ready(function(){
        $('#tour').click(function(){
            tour.init();
            tour.restart();
        });
    });

Если (как и я) вы хотите добавить в справку или приложение профиля кнопку для повторного включения тура, вы можете просто удалить хранилище

function reset_tour() {      
      window.localStorage.removeItem('tour_current_step');
      window.localStorage.removeItem('tour_end');
}

Это перезапустит тур, когда пользователь перезагрузит страницу всего 1 раз.

Другие вопросы по тегам