1

我正在更新我的浏览器应用程序以支持 Windows Phone 8.1,并且我注意到MSGestureHold没有引发该事件。

要重现此错误,

  1. 下载MS 迷你浏览器示例
  2. 在 Visual Studio 2013 中将项目升级到 WP8.1 项目并添加IsScriptEnabled="True".
  3. 在 WP8.1 模拟器或设备上运行项目
  4. 导航到此触摸和鼠标示例
  5. 向下滚动到该Sample 1: handling the hold gesture部分并单击 IE11 users test

请注意,这MSGestureHold不起作用。

但是,该项目在测试时正在运行

  1. WP8 和 WP8.1 的默认 Windows Phone Internet Explorer 应用程序
  2. WP8 应用程序中的 WebBrowser 控件。

这是一个错误吗?

4

2 回答 2

1

我猜这是 WebBrowser 控件的错误。

我使用 WP8.1 的 WebBrowser 控件测试了几个手势事件,例如pointerdownMSGestureHoldMSGestureChangeMSGestureTap。最后pointerdownMSGestureChangeMSGestureTap可以正常触发,除了MSGestureHold。所以我想这是一个错误

于 2014-05-04T10:13:35.607 回答
0

此代码在 WPhone 8.1 应用程序的 webview 中运行良好:

var init = function(){
    var myState = // context
    var target = // DOM variable target
    var msg = new MSGesture();

    msg.target = target;

    target.addEventListener("MSGestureHold", function (evt) { buttonTactileListener.apply(myState, [evt, msg]); }, false);
    target.addEventListener("pointerdown", function (evt) { buttonTactileListener.apply(myState, [evt, msg]); }, false);
    target.addEventListener("MSGestureEnd", function (evt) { buttonTactileListener.apply(myState, [evt, msg]); }, false);
}
var buttonTactileListener = function (evt, msgesture) {
    var myState = this;
    if (evt.type == "pointerdown") {
        msgesture.addPointer(evt.pointerId);
        return;
    }
    if (evt.type == "MSGestureHold") {
        ///do something
        return;
    }

    if (evt.type == "MSGestureEnd") {
        // renew instance of handler
        msgesture = new MSGesture();
        msgesture.target = evt.target;
        return;
    }
}
于 2015-03-19T14:49:54.757 回答