Выравнивание выпадающего меню jqzoom с помощью мобильного сафари (ipad) - PullRequest
2 голосов
/ 15 октября 2011

У меня есть все настройки 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:

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

1 Ответ

1 голос
/ 17 октября 2011

Я нашел ответ сам.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));
}
...