выравнивание всплывающих окон jqzoom с помощью mobile Safari (ipad)

#ipad #mobile-safari #alignment #jqzoom

#iPad #mobile-safari #выравнивание #jqzoom

Вопрос:

У меня настроен 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>
  

Нормально и ожидаемо:

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

Мобильное сафари:

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

Ответ №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));
}
  

Комментарии:

1. Сегодня я понял, что было бесполезно только принудительно перемещать изображение вправо для iPad, потому что такая же проблема возникала с iPhone и Android. Поэтому я удалил условие и просто оставил часть «если». Таким образом, теперь он заставляет все устройства и браузеры отображать всплывающее изображение справа, то есть, если «right» является установленным параметром.