使用JavaScript / Hammer.js检测Android pinch以缩放innerWidth

时间:2013-02-02 14:20:43

标签: javascript android jquery javascript-events hammer.js

我想知道在缩放时缩放的innerWith / viewport宽度。

如果它低于500像素,我想用以下方式更改图像:

$("img#ad").attr("src", "http://img0.www.suckmypic.net/img/1/L/mmy4jT8s/jsFiddle3.png");

我尝试过这样的事情:

var hammer = new Hammer(document.getElementById("log"));

hammer.ontransformstart = function(ev) {
    var pziW = "test"; // Declare here the innerWidth of the pinch to zoom
    if (pziW < 500) {
        $("img#ad").attr("src", "http://img0.www.suckmypic.net/img/1/L/mmy4jT8s/jsFiddle3.png");
    }
};
hammer.ontransform = function(ev) {
    var pziW = "test"; // Declare here the innerWidth of the pinch to zoom
    if (pziW < 500) {
        $("img#ad").attr("src", "http://img0.www.suckmypic.net/img/1/L/mmy4jT8s/jsFiddle3.png");
    }
};
hammer.ontransformend = function(ev) {
    var pziW = "test"; // Declare here the innerWidth of the pinch to zoom
    if (pziW < 500) {
        $("img#ad").attr("src", "http://img0.www.suckmypic.net/img/1/L/mmy4jT8s/jsFiddle3.png");
    }
};

但我不知道如何声明缩放的innerWidth来缩放。

这是jsFiddle:

http://jsfiddle.net/nLvu6/

有人有答案吗?

1 个答案:

答案 0 :(得分:3)

您想要检测的不是innerWidth。

看一下传递给锤子函数的ev变量:

distance: 0
distanceX: 0
distanceY: 0
originalEvent: TouchEvent
position: Object
rotation: 124.85234015769826
scale: 2.0725083746457824
touches: Array[0]
type: "transformend"
__proto__: Object

scale: 2.0725083746457824是我们想要的。如果比例高于或低于某个阈值,则执行图像替换功能。

我已经分叉了你的JSFiddle。见这里:http://jsfiddle.net/BFBrU/14/

Before pinch After pinch