同时设置scrollLeft/scrollTop在Safari 6中不起作用

同时设置scrollLeft/scrollTop在Safari 6中不起作用,scroll,osx-mountain-lion,scrollto,safari,Scroll,Osx Mountain Lion,Scrollto,Safari,在Safari 6中同时设置scrollTop和scrollLeft参数时,两个参数中只有一个被执行,页面仅在一个轴上滚动。这可以通过使用本机JavaScript、jQuery和插件实现 使用jQuery的.animate()的示例: $('body')。设置动画({ “左滚动”:100, “滚动顶端”:100 }, { “持续时间”:500, “放松”:“摇摆” }); 我在这里设置了一个演示页面: 正如预期的那样,所有示例在所有主要浏览器中都可以正常工作,在Safari6中,只有第4、6和

在Safari 6中同时设置
scrollTop
scrollLeft
参数时,两个参数中只有一个被执行
,页面仅在一个轴上滚动。这可以通过使用本机JavaScript、jQuery和插件实现

使用jQuery的
.animate()
的示例:

$('body')。设置动画({
“左滚动”:100,
“滚动顶端”:100
}, {
“持续时间”:500,
“放松”:“摇摆”
});
我在这里设置了一个演示页面:

正如预期的那样,所有示例在所有主要浏览器中都可以正常工作,在Safari6中,只有第4、6和7个示例可以正常工作。 不知何故,当在
IFRAME
中加载演示页面时(请参见演示页面底部),一切正常

这是Safari中的一个bug吗?如果是,如何解决这个问题?如果不是,原因是什么?如何解决

其他相关报告:


我需要让jquery.scrollTo插件在OSX Mountain Lion上运行,因为我找不到导致这种行为的具体原因,所以我制定了一个相当丑陋的解决方案。它在jQuery的
.animate()
的step函数中使用
window.scrollTo(x,y)
,这在Safari 6中没有问题:

var左;
$(窗口)。设置动画({
“pageXOffset”:100,
“页面偏移”:100
}, {
持续时间:500,
放松:"摇摆",,
步骤:函数(现在,fx){
如果(fx.prop=='pageXOffset'){
左=现在;
}否则如果(fx.prop=='pageYOffset'){
滚动到(左,现在);
}
}
});
请注意,对于每个动画属性,对于应用动画的每个元素(在我们的示例中仅为1:
窗口
),都会调用step函数。因此,中间变量用于在动画中存储当前X位置

它使用
window
对象的
pageXOffset
pageYOffset
属性,因此我不知道这种解决方法对于设置非window对象的
scrollLeft
scrollTop
属性的动画有多合适


无论如何,它可以滚动整个文档,这是我想要的,而且在Safari 6中也非常流畅

我需要让jquery.scrollTo插件在OSX Mountain Lion上运行,因为我找不到导致这种行为的具体原因,所以我制定了一个相当丑陋的解决方案。它在jQuery的
.animate()
的step函数中使用
window.scrollTo(x,y)
,这在Safari 6中没有问题:

var左;
$(窗口)。设置动画({
“pageXOffset”:100,
“页面偏移”:100
}, {
持续时间:500,
放松:"摇摆",,
步骤:函数(现在,fx){
如果(fx.prop=='pageXOffset'){
左=现在;
}否则如果(fx.prop=='pageYOffset'){
滚动到(左,现在);
}
}
});
请注意,对于每个动画属性,对于应用动画的每个元素(在我们的示例中仅为1:
窗口
),都会调用step函数。因此,中间变量用于在动画中存储当前X位置

它使用
window
对象的
pageXOffset
pageYOffset
属性,因此我不知道这种解决方法对于设置非window对象的
scrollLeft
scrollTop
属性的动画有多合适


无论如何,它可以滚动整个文档,这是我想要的,而且在Safari 6中也非常流畅

哦,对jquery.scrollTo插件的快速修复:哦,对jquery.scrollTo插件的快速修复: