2

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

有谁知道 jqzoom 的工作原理足以知道它为什么会这样做?看起来 jqzoom 无论如何都在设置 [left:] ,并且如果弹出要在右侧,只需相应地调整 [left:] 值(比如在 -minus 方向上)?如果是这样,它不能只做一个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:

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

1 回答 1

1

我自己找到了答案。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));
}
于 2011-10-17T18:24:14.253 回答