我正在使用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”);
有什么想法吗?
答案 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
回调添加到原始循环对象的问题,您可以完全按照onBefore
和onAfter
的要求进行操作。使用您要执行的任何代码创建一个函数,然后在传递给插件的对象哈希中包含end: yourFuncName
。停止循环插件的另一种方法是$(selector).cycle('stop');
。但同样,在你的情况下,这一切都不需要。只需删除对end
的调用,您就可以了。