jcarousel在Chrome中无法正常运行

时间:2010-01-04 07:26:11

标签: jquery jcarousel

在我的代码中,我为jcarousel创建了一个ul li,即它的数据列表(例如照片列表)

当照片数量大于4时,jcarousel会启用水平滚动,以便查看下4张照片。

问题: 就是当我在chrome中运行代码时,即使照片数量超过4,水平卷轴仍保持禁用状态,在其他浏览器中它完美运行..

继承了导入jquery文件的代码:

     function SetCarousel() {

            $.getScript('<%=Html.LibUrl("jplugins/jquery.jcarousel.pack.js")%>', 
function(result)
                {

                jQuery('#CarouselUL').jcarousel({
                    visible: 4
                });
            });

        }

我试过引用.js文件@页面顶部(aspx)无法正常工作..甚至让它变得更糟

请帮助

7 个答案:

答案 0 :(得分:15)

我通过评论指定Safari的代码在我正在处理的网站上修复了这个问题。由于某种原因,他们放入的修补程序似乎已经过时了。我正在使用jQuery 1.3.2。

这是我删除的代码:

jquery.carousel.js :围绕第184行

    /*if ($.browser.safari) {
      this.buttons(false, false);
      $(window).bind('load', function() { self.setup(); });
    } else */
      this.setup();

jquery.carousel.js :第858行附近

            /*if (p == 'marginRight' && $.browser.safari) {
            var old = {'display': 'block', 'float': 'none', 'width': 'auto'}, oWidth, oWidth2;

            $.swap(el, old, function() { oWidth = el.offsetWidth; });

            old['marginRight'] = 0;
            $.swap(el, old, function() { oWidth2 = el.offsetWidth; });

            return oWidth2 - oWidth;
            }*/

希望此修复程序可以帮助您和遇到问题的其他人!

答案 1 :(得分:1)

我尝试了1号解决方案,但它确实有效。好男人,非常感谢你。 我只是评论了这些界限:

/*if ($.browser.safari) {
  this.buttons(false, false);
  $(window).bind('load', function() { self.setup(); });
} else */
  this.setup();

答案 2 :(得分:1)

这很棒我的问题解决了 谢谢jsims281

在我的情况下,我使用了

  

jquery.jcarousel.min

并且评论的代码是 第134至139行

/*if(!q&& i.browser.safari){
            this.buttons(false,false);
            i(window).bind("load.jcarousel",function(){
                g.setup()
                })
            }else */ this.setup()
            };

和第470至484行

 /*if(c=="marginRight"&&i.browser.safari){
            var d={
                display:"block",
                "float":"none",
                width:"auto"
            },e,f;
            i.swap(b,d, function(){
                e=b.offsetWidth
                });
            d.marginRight=0;
            i.swap(b,d,function(){
                f=b.offsetWidth
                });
            return f-e
            }*/

答案 3 :(得分:1)

在0.2.9版本中,这对我有用。
我拿了缩小版本并把它扔过http://jsbeautifier.org 并在第95行更改了以下内容

}, null !== this.options.initCallback && this.options.initCallback(this, "init"), !c && d.isSafari() ? (this.buttons(!1, !1), a(window).bind("load.jcarousel", function ()
{
l.setup()
})) : this.setup()

    }, null !== this.options.initCallback && this.options.initCallback(this, "init"), !c /*&& d.isSafari() ? (this.buttons(!1, !1), a(window).bind("load.jcarousel", function ()
    {
        l.setup()
    })) :*/ this.setup()

答案 4 :(得分:0)

我想你的意思是jCarousel

如果是,您使用的是哪个jQuery版本?

因为此插件现在很长时间没有任何更新。当前版本从2008年4月7日起为0.2.3,此版本的更改日志为

  

版本0.2.3 - 2008-04-07更新了
   - jQuery到1.2.3版。固定
   - (希望)与Safari有关的问题

我记得这个插件在从1.2.6开始的新jQuery版本中遇到一些问题(今天我们已经是1.3.2)。

此外,您必须知道当前版本的jCarousel出现在Google Chrome的第一个版本之前(版本0.2于2008年9月8日发布)。

答案 5 :(得分:0)

非常好...... jquery.carousel.js:围绕第184行

/ * if($ .browser.safari){   this.buttons(false,false);   $(window).bind('load',function(){self.setup();}); 其他* /   this.setup();

jquery.carousel.js:第858行附近

      /*if (p == 'marginRight' && $.browser.safari) {
        var old = {'display': 'block', 'float': 'none', 'width': 'auto'}, oWidth, oWidth2;

        $.swap(el, old, function() { oWidth = el.offsetWidth; });

        old['marginRight'] = 0;
        $.swap(el, old, function() { oWidth2 = el.offsetWidth; });

        return oWidth2 - oWidth;
        }*/

这非常有效....谢谢......

答案 6 :(得分:0)

在版本0.28中似乎只剩下一个条件,它会导致完成设置的延迟

基于Jsims281(感谢Jsims),我搜索了jCarousel v0.28的最小化版本,发现该行如下:

!m&&g.browser.safari?(this.buttons(!1,!1),g(window).bind("load.jcarousel",function(){e.setup()})):

应该评论以上内容:

/*!m&&g.browser.safari?(this.buttons(!1,!1),g(window).bind("load.jcarousel",function(){e.setup()})):*/