仅IE7中的Javascript错误(jQuery / Cycle.js

时间:2010-08-21 00:44:29

标签: javascript jquery internet-explorer-7 cycle

我正在使用jQuery和cycle.js淡化本网站上的一些图片。

在第一张和最后一张幻灯片上,我放了一个回调函数转到下一页/上一页,但在IE7中我收到运行时javascript错误(不在任何其他浏览器中)。

以下是我的javascript文件的链接:http://bit.ly/dAKEof

我在IE7中收到的错误是:

行:126 Char:4 错误:预期的对象 代码:0

这是我在functions.js文件第126行的代码:

window.location = $('#next')。find(“a”)。attr(“href”);

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我没有在您的问题中看到指向该网站的链接,但在您的个人资料中看到了一个网址,然后去那里查看是否可能是该网址。看起来像是......

IE因其javascript错误中的错误行号而臭名昭着。错误实际上在第125行:

function onBefore(curr, next, opts, fwd) {
    // If the page isn't loading or refreshing - initCycle == false (fixes auto unbinding of slide opts on load)
    // If is last slide and next slide is fwd direction go to next project instead of wrapping cycle
    if(opts.currSlide + 1 == opts.slideCount && fwd && !initCycle){
        opts.end(opts); // <-- this line is failing b/c the end function is null
        window.location = $('#next').find("a").attr("href");
    }
    // If is first slide, and next slide is bkwd direction go to prev project instead of wrapping cycle
    else if(opts.currSlide + 1 == 1 && !fwd){
        opts.end(opts); // <-- this also fails for the same reason
        window.location = $('#prev').find("a").attr("href");
    }
}

end对象中的ops函数为空,这就是错误所在的位置。有趣的是,我也检查了FF,这也是如此,但在这种情况下它似乎比IE更优雅。

从代码的其余部分开始,如何调用onBefore函数并不完全清楚。看起来它可能是循环插件本身。在任何情况下,无论何处发生调用,opts对象似乎都没有填充您的函数所需的所有数据。

<强>更新

我看了一下循环插件代码,opts.end是插件用户必须提供的回调。因此,解决问题的方法是在创建循环对象时(js文件中的第101行)提供自己的回调,或者删除代码中调用end函数的行。

根据以下OP的评论进行更新:

仔细检查后,您的代码实际上会完全按照您的意愿执行,而无需调用end回调,因此您可以安全地删除这些行。该插件会在执行任何动画之前触发您的onBefore回调。而且,当你从第一张幻灯片向后移动或从最后一张幻灯片向前移动时,你在浏览器中重新加载一个新的URL,它甚至都不会达到淡入淡出动画,这是你的目标。

但是,要回答有关如何将end回调添加到原始循环对象的问题,您可以完全按照onBeforeonAfter的要求进行操作。使用您要执行的任何代码创建一个函数,然后在传递给插件的对象哈希中包含end: yourFuncName。停止循环插件的另一种方法是$(selector).cycle('stop');。但同样,在你的情况下,这一切都不需要。只需删除对end的调用,您就可以了。