2011-10-15 45 views
2

我有jqzoom所有设置和一切工作很好,除了几件事情,一个即使我告诉jqzoom对齐弹出图像的原始图像的权利,在我们的iPad将图像放在左侧。jqzoom与移动Safari(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

,我发现自己的答案。 jqzoom决定是否有足够的空间来放置弹出图像,并且在iPad上没有(在我们的情况下),所以它显示在左侧。尽管事实上右边的空间比左边的要多,

因此,我正在检测iPad并将其强制按预期方式放在右侧。

在周围线535 jquery.jqzoom-core.js:

前:

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)); 
} 
+0

我意识到今天是有点没用的,只能迫使图像iPad的权利“,因为iPhone和Android都出现同样的问题。所以我删除了条件,只留下'if'部分。因此,它现在强制所有设备和浏览器在右侧显示弹出图像,也就是说,如果“正确”是已建立的设置。 –