#javascript #reload #galleria
#javascript #перезагрузите #галерея
Вопрос:
Я использую слайд-шоу 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>
Я искал вокруг, но все еще не нашел решения, которое работает. Моей личной идеей было создать скрипт, который будет продолжать загружаться до тех пор, пока не завершится успешно, поскольку при перезагрузке страница работает.
Как бы мне это сделать?
Ответ №1:
1 Попробуйте последнюю сборку на gihub:https://github.com/aino/galleria/blob/master/src/galleria.js
2 Попробуйте загрузить тему, используя вместо этого тег script:
<script src="javascript/themes/classic/galleria.classic.js"></script>
Ответ №2:
Я применил метод, указанный Дэвидом, загрузив тему с помощью тега script:
<script src="javascript/themes/classic/galleria.classic.js"></script>
Но в конечном итоге получал другую ошибку (неустранимая ошибка: тема CSS не могла загрузиться через 20 секунд). Я бы также рекомендовал добавить CSS с помощью тега link:
<link rel="stylesheet" type="text/css" href="galleria/themes/classic/galleria.classic.css" />
Ответ №3:
У меня было похожее сообщение сегодня, когда я попытался использовать Galleria. Это произошло только в Firefox. Что я сделал, чтобы обойти это, так это добавить ссылку на таблицу стилей темы непосредственно в head
. Я также сохранил ссылку на сценарий темы после таблицы стилей, на всякий случай, если это было необходимо. После этого сообщение об ошибке исчезло, и Galleria работает так, как должна.
Ответ №4:
Судя по тому, откуда приходит сообщение об ошибке, и учитывая случайные появления, эта проблема может быть вызвана простым превышением времени ожидания при загрузке:
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 секунд. Поэтому обновление до более поздней версии или настройка времени ожидания — это определенно то, что стоит попробовать.
Ответ №5:
Учитывая случайное поведение, это похоже на ошибку браузера. Более конкретно, то, что браузер теряет отслеживание базового URL. Я бы указал полный путь от веб-корня и посмотрел, исчезнет ли ошибка. Например:
Galleria.loadTheme('/gallery/javascript/themes/classic/galleria.classic.js');
Если это не поможет, попробуйте:
try {
Galleria.loadTheme('javascript/themes/classic/galleria.classic.js');
}
catch(e) {
location.reload();
}
Но это может продолжаться бесконечно. Я бы попытался разобраться в причине ошибки и начал с разных браузеров, чтобы исключить ошибку в вашем коде.
Комментарии:
1. Я указываю к ней полный путь, но я удалил его, когда размещал здесь. Я попробовал location.reload () , но все еще получил ошибку Uncaught: Неустранимая ошибка: тема не найдена. 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
2. @odle Вы тестировали разные браузеры? Если это не проблема с путем, возможно, это проблема с кэшем. Если вы можете проверить журналы веб-сервера и посмотреть, отправлен ли файл. «Тема не найдена» выглядит иначе, чем «не удалось загрузить».
3. У меня нет доступа к журналам, извините. И я протестировал это со всеми браузерами. Все еще происходит. Странная вещь в том, что при перезагрузке все в порядке.
Ответ №6:
В руководстве для начинающих указано, что тег script, с помощью которого вы загружаете тему, должен располагаться после изображений в исходном коде html. Вероятно, вы добавили тег script в тег head. Пример из руководства:
<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>