我在一个网站上为我的一个客户使用Jon Designs SmoothGallery。唯一的问题是我在尝试转到下一个图像时在IE8中收到脚本错误。我已经在所有主流浏览器中检查了这个库,而且IE再次无效。
真是一个惊喜。
我一直试图找出问题所在,但我只是在画廊所依据的mootools库的eval-function中出错,所以没有运气。
有没有办法设置一个“All-Exceptions Breakpoint”,类似于在Xcode中设置一个,这样我就能找到它实际上挂起的代码?或者有人知道这里到底发生了什么吗?
网站为http://internetvolk.de/tische,负责图库的JS文件为http://internetvolk.de/typo3conf/ext/rgsmoothgallery/res/scripts/jd.gallery1010.js
提前谢谢你,
Tobias Timpe
答案 0 :(得分:1)
你正在使用真正的旧版mootools - 0.89或1.0,如果我没有弄错的话。通过dean edwards的PACKER进行评估,这使得调试变得特别困难。
实例化代码本身有些糟糕且猴子修补了:
function startGallery17() {
if (window.gallery17) {
try {
var myGallery17 = new gallery($('myGallery17'), {
timed: false,
showArrows: true,
showCarousel: false,
textShowCarousel: 'Thumbnails',
embedLinks: false,
lightbox: true
});
var mylightbox = new LightboxSmoothgallery();
} catch (error) {
window.setTimeout("startGallery17();", 2500);
}
} else {
window.gallery17 = true;
if (this.ie) {
window.setTimeout("startGallery17();", 3000);
} else {
window.setTimeout("startGallery17();", 100);
}
}
}
window.onDomReady(startGallery17);
在setTimeouts中使用字符串也会导致evals,try块也会阻止您获得任何有用的错误反馈。
如果你想深究这一点,摆脱这些黑客,加载说,这个版本的mootools - https://ajax.googleapis.com/ajax/libs/mootools/1.11/mootools.js - 仍然很老但比你的更新,或者如果可能的话,试试1.12和看看调试变得容易了。
然后摆脱try / catch块,使用window.addEvent('domready', fn)
启动代码 - 或者如果依赖于加载的图像,请考虑使用window.addEvent('load', fn)
。
如果你在页面上所做的只是将一些图像叠加到下一个/上一个,为什么不使用带有新插件的最新mootools - 你所选择的内容并不好。
例如,阅读本教程,我写了如何做到这一点:http://fragged.org/tutorial-write-a-small-content-slider-class-in-mootools-and-extend-it_1321.html或查看伪造:http://mootools.net/forge/打包的内容
应该没有1.4.5(最新)。
请记住,您当前使用的版本可能会破坏ie9和最新的gecko