WebBrowser Control for Windows Phone 8.1忽略MSGestureHold

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

要重现此错误,

  1. 下载MS Mini-browser Sample 。
  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控件。

这是一个错误吗?

我想这是WebBrowser控件的错误。

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

此代码适用于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; } }