Windows Phone 8.1的WebBrowser控件将忽略MSGestureHold

本文关键字:MSGestureHold 控件 WebBrowser Phone Windows | 更新日期: 2023-09-27 17:59:20

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

为了重现这个错误,

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

请注意,MSGestureHold不起作用。

然而,当在中测试时,该项目正在运行

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

这是个虫子吗?

Windows Phone 8.1的WebBrowser控件将忽略MSGestureHold

我想这是WebBrowser控件的错误。

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

此代码在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;
    }
}