0

我正在为我的一位客户在网站上使用 Jon Designs SmoothGallery。唯一的问题是在尝试转到下一个图像时,我在 IE8 中遇到了脚本错误。我已经在所有主流浏览器中检查过这个画廊,但 IE 还是无法正常工作的那个。

真是个惊喜。

我一直在试图找出问题所在,但我只在画廊所基于的 mootools 库的 eval 函数中遇到错误,所以那里没有运气。

有没有办法设置“所有异常断点”,类似于在 Xcode 中设置一个,以便我可以找到它实际挂起的代码?或者有谁知道这里到底发生了什么?

该站点是http://internetvolk.de/tische,负责画廊的 JS 文件是http://internetvolk.de/typo3conf/ext/rgsmoothgallery/res/scripts/jd.gallery1010.js

先感谢您,

托拜厄斯·廷佩

4

1 回答 1

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 和最新的壁虎

于 2012-05-17T09:06:45.037 回答