WebBrowser Control for Windows Phone 8.1忽略MSGestureHold
我正在更新我的浏览器应用程序以支持Windows Phone 8.1,我注意到没有引发MSGestureHold
事件。
要重现此错误,
- 下载MS Mini-browser Sample 。
- 在Visual Studio 2013中将项目升级到WP8.1项目并添加
IsScriptEnabled="True"
。 - 在WP8.1仿真器或设备上运行该项目
- 导航到此触摸和鼠标示例 。
- 向下滚动到
Sample 1: handling the hold gesture
部分并单击IE11用户测试 。
请注意, MSGestureHold
无法正常工作。
但是,该项目在测试时正在运行
- 适用于WP8和WP8.1的默认Windows Phone Internet Explorer应用程序
- WP8应用程序中的WebBrowser控件。
这是一个错误吗?
我想这是WebBrowser控件的错误。
我使用WebBrowser控件为WP8.1测试了几个手势事件,例如pointerdown , MSGestureHold , MSGestureChange和MSGestureTap 。 最后,除了MSGestureHold之外,可以正常触发pointerdown , MSGestureChange和MSGestureTap 。 所以我猜这是一个错误 。
此代码适用于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; } }