Jqzoom飞出对齐移动safari (ipad)



我已经设置了jqzoom,一切都很好,除了一些事情,一个是即使我告诉jqzoom将弹出图像对齐到原始图像的右侧,在我们的ipad上,它将图像放在左侧。

有谁知道jqzoom的工作原理,知道为什么它会这样做吗?看起来jqzoom无论如何都在设置[left:],并且只是相应地调整[left:]值(例如在-负方向上),如果弹出是在右边?如果是这种情况,它不能只执行If/else,如果它需要在右边,设置[right:]而不是[left:]吗?

我是这样设置jqzoom的:

<div id="jqDiv" style="width:400px; height:400px;">
<a id="imageNameAId" href="http://path.to.image/bigImage.jpg" class="MYCLASS" rel="gal1">
    <img src='http://path.to.image/smallImage.jpg' alt='imageName' id='imageNameImgId' height="400" width="400" />
</a>
</div>
<script type="text/javascript">
var options = {
    zoomType: "standard",
    lens: true,
    preloadImages: true,
    alwaysOn: false,
    zoomWidth: 600,
    zoomHeight: 600,
    xOffset: 10,
    yOffset: 0,
    position: "right",
    title: false
};
// Delay jqzoom binding to allow (rel) thumbnail images time to load
setTimeout( function() {
    jQuery('#imageNameA').jqzoom(options);
}, 500);
</script>

正常和预期:

.--. .-----.
|  | |     |
`--' |     |
     `-----'

移动Safari:

.-----. .--.
|     | |  |
|     | `--'
`-----'

我自己找到了答案。jqzoom确定右侧是否有足够的空间放置弹出图像,而在iPad上没有足够的空间(在我们的示例中),因此它将其显示在左侧。尽管右边的空间比左边大,它还是会这样做。

所以我正在检测iPad并按预期将其强制到右侧。

jquery.jqzoom-core.js第535行:

:

    this.node.leftpos = (smallimage.rightlimit + Math.abs(settings.xOffset) + settings.zoomWidth < screen.width) ? (smallimage.ow + Math.abs(settings.xOffset)) : (0 - settings.zoomWidth - Math.abs(settings.xOffset));
:后

if (navigator.userAgent.match(/iPad/i) != null) {
    this.node.leftpos = (smallimage.ow + Math.abs(settings.xOffset));
} else {
    this.node.leftpos = (smallimage.rightlimit + Math.abs(settings.xOffset) + settings.zoomWidth < screen.width) ? (smallimage.ow + Math.abs(settings.xOffset)) : (0 - settings.zoomWidth - Math.abs(settings.xOffset));
}

最新更新