Тема галереи иногда не загружается

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

 Uncaught Error: Fatal error: Theme at javascript/themes/classic/galleria.classic.js
 could not load, check theme path.

Когда я перезагружаю страницу, все возвращается к норме. Это код, который я использую для его загрузки:

  <script> 
        // Load the classic theme
   Galleria.loadTheme('javascript/themes/classic/galleria.classic.js');
    </script> 

Я искал вокруг, но до сих пор не нашел решение, которое работает. Моя личная идея заключалась в том, чтобы script сохранял загрузку до тех пор, пока она не преуспеет, так как при перезагрузке страницы работает. Как мне это сделать?

Ответ 2

У меня было подобное сообщение сегодня, когда я пытался использовать Galleria. Это произошло только в Firefox. То, что я сделал, чтобы обойти это, - добавить ссылку на таблицу стилей непосредственно в head. Я также добавил ссылку на тему script, после таблицы стилей, на всякий случай, когда это было необходимо. После этого сообщение об ошибке исчезло, и Galleria работает так, как должно.

Ответ 3

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

Galleria.loadTheme = function( src, options ) {

var loaded = false,
    length = _galleries.length,
    err = window.setTimeout( function() {
        Galleria.raise( "Theme at " + src + " could not load, check theme path.", true );
    }, 5000 );

В версии 1.2.2 таймаут составляет всего 2 секунды, в приведенном выше (1.2.6) тайм-аут составляет 5 секунд. Поэтому обновление до более поздней версии или настройка тайм-аута - это определенно попробовать.

Ответ 4

Я принял метод, указанный Дэвидом, загружая тему с помощью тега script:

<script src="javascript/themes/classic/galleria.classic.js"></script>

Но в итоге получилась еще одна ошибка (Fatal error: Theme CSS не удалось загрузить через 20 секунд). Я также рекомендую добавлять CSS с помощью тега ссылки:

<link rel="stylesheet" type="text/css" href="galleria/themes/classic/galleria.classic.css" />

Ответ 5

Учитывая случайное поведение, это похоже на ошибку браузера. Более конкретно, браузер теряет отслеживание базового URL. Я бы дал полный путь от webroot и посмотрел, исчезла ли ошибка. Например:

Galleria.loadTheme('/gallery/javascript/themes/classic/galleria.classic.js');

Если это не поможет, попробуйте:

try {
    Galleria.loadTheme('javascript/themes/classic/galleria.classic.js');
}
catch(e) {
    location.reload();
}

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

Ответ 6

Руководство для начинающих утверждает, что тег script, в который вы загружаете тему, должен быть после изображений в источнике HTML. Вероятно, вы добавили тег script в тег заголовка. Пример из руководства:

<body>
    <div id="galleria">
        <img src="photo1.jpg">
        <img src="photo2.jpg">
        <img src="photo3.jpg">
    </div>
    <script>
        Galleria.loadTheme('galleria/themes/classic/galleria.classic.min.js');
        Galleria.run('#galleria');
    </script>
</body>