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

Я использую слайд-шоу 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> 

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


person odle    schedule 30.05.2011    source источник


Ответы (6)


1 Попробуйте последнюю сборку на gihub: https://github.com/aino/galleria/blob/master/src/galleria.js

2 Попробуйте вместо этого загрузить тему с помощью тега script:

<script src="javascript/themes/classic/galleria.classic.js"></script>
person David Hellsing    schedule 01.06.2011

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

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

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

<link rel="stylesheet" type="text/css" href="galleria/themes/classic/galleria.classic.css" />
person Ivan Chaer    schedule 18.02.2013

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

person Benny Jobigan    schedule 02.09.2011

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

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 секунд. Так что обновление до более поздней версии или настройка времени ожидания определенно стоит попробовать.

person jfklein    schedule 06.11.2011

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

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

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

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

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

person Mel    schedule 30.05.2011
comment
Я даю ему полный путь, но я удалил его, когда писал здесь. Я попробовал location.reload() , но все равно получил Uncaught Error: Fatal error: Theme found. j.raisegalleria-1.2.2.min.js:77 j.init.j.theme.object.g.wait.errorgalleria-1.2.2.min.js:42 g.wait.igalleria-1.2.2.min. js:12 - person odle; 31.05.2011
comment
@odle Вы тестировали разные браузеры? Если это не проблема с путем, возможно, это проблема с кешем. Если вы можете проверить журналы веб-сервера и посмотреть, отправлен ли файл. Тема не найдена, кажется, она не может загрузиться. - person Mel; 31.05.2011
comment
У меня нет доступа к логам, извините. И я проверил это со всеми браузерами. Еще бывает. Странно, что при перезагрузке все нормально. - person odle; 31.05.2011

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

<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>
person andre    schedule 23.06.2013