【发布时间】:2014-10-08 00:46:15
【问题描述】:
我对 iPad 的缩放有疑问。
点击时,用户应该会看到一个带有叠加层的弹出窗口,并且视图不应该被缩放——这意味着它应该缩小到 0.75 倍(基本上是尽可能地缩小)。因此,我将此 jQuery 代码应用于视口:
$('meta[name="viewport"]').attr('content', 'width=1020, height=device-height, initial-scale=0.75, minimum-scale=0.75, maximum-scale=0.75, user-scalable=no');
关闭时我也将其重置为原始值以启用缩放。像这样:
$('meta[name="viewport"]').attr('content', 'width=1020');
所以重申一下:
- 用户访问页面,初始视口内容为width=1020
- 用户单击触发弹出窗口的元素,用户可能已经在页面上捏拉放大了
- Popup 事件更改视口内容,使其缩小到 0.75 [代码块 #1]
- 当弹出窗口关闭时,视口内容被重置 [代码块 #2]
这可以正常工作,直到用户在第一个视口更改后执行一个捏缩放操作,并再次触发弹出事件。然后应用的视口属性不会生效,它会保持放大而不是0.75。
TLDR:视口横向扩展仅适用一次 :)
附加更多代码:
$('body').on('click', '#large-image', function() {
$('meta[name="viewport"]').attr('content', 'width=1020, height=device-height, initial-scale=0.75, minimum-scale=0.75, maximum-scale=0.75, user-scalable=no');
// HERE GOES CODE THAT CREATES A FIXED DIV WITH 100% IN BOTH HEIGHT AND WIDTH
});
$('body').on('click', '#zoomPinchClose', function() {
// REMOVE THE FIXED DIV
$('meta[name="viewport"]').attr('content', 'width=1020');
});
基本上就是这样。没有造型的身体。只会创建一个拉伸的固定 div。
【问题讨论】:
-
我们可以再看一些代码吗?我们需要看看这两条 jquery 何时被调用。
-
当然,添加了一些额外的代码。这是非常基本的点击事件,没有什么花哨的。
-
固定的 div 真的被删除了吗?另外,点击函数是否在第 2 次被调用?
-
是的,它已被删除。此外,我在每个事件之后打印值以查看视口变化。它们确实更改为我想要的值,但似乎只影响一次视口。是的,点击功能第二次起作用,因为弹出窗口确实如此。
-
我现在正在检查我的所有代码以找到罪魁祸首。我刚刚注意到,仅在第一次单击时才将 console.log() 打印到弹出单击事件中。但是,在控制台中手动输入 $('meta[name="viewport"]') 会显示正在更改的值。我正在使用 iPad 模拟器和 Safari 网络检查器。
标签: jquery ios viewport pinchzoom initial-scale