我在我的网站上使用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在gihub尝试最新版本:https://github.com/aino/galleria/blob/master/src/galleria.js
2尝试使用脚本标记加载主题:
<script src="javascript/themes/classic/galleria.classic.js"></script>
我采用了David指出的方法,使用脚本标签加载主题:
<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" />
我今天尝试使用Galleria时收到了类似的消息。它只发生在Firefox中。我所做的就是直接在head
中添加主题样式表链接。在样式表之后,我也保留了主题脚本链接,以备不时之需。之后,错误信息消失了,Galleria正在正常工作。
从错误消息的来源判断,并考虑到随机发生的情况,这个问题可能是由于加载时超时:
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秒。因此,升级到更高版本或自定义超时肯定是值得尝试的。
考虑到随机行为,这感觉就像是一个浏览器错误。更具体地说,浏览器会丢失对基本URL的跟踪。我会给出webroot的完整路径,看看错误是否消失。例如:
Galleria.loadTheme('/gallery/javascript/themes/classic/galleria.classic.js');
如果这没有帮助,请尝试:
try {
Galleria.loadTheme('javascript/themes/classic/galleria.classic.js');
}
catch(e) {
location.reload();
}
但这可能是无限的。我会尝试找出错误的根源,并从不同的浏览器开始,以排除代码中的错误。
《初学者指南》指出,加载主题的脚本标记需要位于html源中图像的之后。您可能已经在head标记中添加了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>