为什么将网页套入exe中网页的轻扫等手势失效?
我写了一个测试页面,在里面实现了网页的手势,如轻扫,hold等手势。用IE11打开该测试页面手势都正常。
但是我把这个页面用c++写的Web Browser控件去打开测试页面,手势竟然都无效?请求高手解决啊!感激不尽!
手势测试页面代码如下:
Why use webbrowser Ctrl to open a webpage the gesture is disable, such as swipe gesture?
I wrote a test page about realizating the page gesture, such as hold \swipe gestures. I use IE11 to open this test page. all is normal. but when I use my "exe" to open this page , the gestures all disable. the ".exe" program wrote by c++ to load webbrowser ctrl. I use the ctrl method Navigate2() to open this test page .
I want to known how to make the page gesture enable on this ".exe" program. thanks!
<!DOCTYPE html ><html xmlns="http://www.w3.org/1999/xhtml"><head><title>Gesture Event Firing test</title><style type="text/css"> .display { /* Block areas from being selected */ -ms-user-select: none; } body { /* Block area from manipulation actions (zoom, pan) */ -ms-touch-action: none; }</style><script type="text/javascript"> var messageId = 0; var redGesture, blueGesture; var redElement, blueElement; function printMessage(str) { var element = document.getElementById("output"); messageId++; element.value += formatMessage(messageId + ":", 4) + str; element.scrollTop = element.scrollHeight; element = document.getElementById("eventCount"); element.innerHTML = messageId; } function formatMessage(str, len) { var formattedMessage = null; if (str != null) { var formattedMessage = str.toString(); formattedMessage += " "; for (var idx = formattedMessage.length; idx < len; idx++) { formattedMessage += " "; } } return formattedMessage; } function onLoad() { // Create gesture event listeners for each <div> element prepareTarget("Red", redListener); prepareTarget("Blue", blueListener); // Create MSGesture object 1 (red <div>) redGesture = new MSGesture(); redElement = document.getElementById("Red"); redGesture.target = redElement; // Create MSGesture object 2 (blue <div>) blueGesture = new MSGesture(); blueElement = document.getElementById("Blue"); blueGesture.target = blueElement; redElement.addEventListener("MSGestureChange", handlegesture); blueElement.addEventListener("MSGestureChange", handlegesture); } function handlegesture(e) { if (e.velocityX > 1.5) //通过滑动速度判断swipe { //alert('swipright'); } if (e.velocityX < -1.5) { //alert('swipleft'); } if (e.scale > 1) //直接通过scale信息判断pinch { //alert('pinchout'); } else if (e.scale < 1) { //alert('pinchin'); } } // Add gesture events to an element and point at a specific function function prepareTarget(targetId, eventListener) { var target = document.getElementById(targetId); target.addEventListener("MSGestureStart", eventListener, true); target.addEventListener("MSGestureEnd", eventListener, true); target.addEventListener("MSGestureChange", eventListener, true); target.addEventListener("MSInertiaStart", eventListener, true); target.addEventListener("MSGestureTap", eventListener, true); target.addEventListener("MSGestureHold", eventListener, true); target.addEventListener("pointerdown", eventListener, true); } function printEvent(evt) { var str = formatMessage(evt.type, 16) + formatMessage(evt.screenX, 6) + formatMessage(evt.screenY, 6) + formatMessage(evt.clientX.toFixed(0), 6) + formatMessage(evt.clientY.toFixed(0), 6) + formatMessage(evt.translationX.toFixed(2), 8) + formatMessage(evt.translationY.toFixed(2), 8) + formatMessage(evt.scale.toFixed(2), 7) + formatMessage(evt.rotation.toFixed(2), 7) + formatMessage(evt.detail, 5) + formatMessage(evt.currentTarget.id, 10) + formatMessage(evt.srcElement.id, 10) +"\n"; printMessage(str); evt.stopPropagation(); } // Reset the gesture object function reset() { printMessage("Reset gesture\n"); redGesture.reset(); blueGesture.reset(); } // Adds a pointer to the MSGesture object for the red square function redListener(evt) { if (evt.type == "pointerdown") { redGesture.addPointer(evt.pointerId); return; } printEvent(evt); } // Adds a pointer to the MSGesture object for the blue square function blueListener(evt) { if (evt.type == "pointerdown") // add pointer on pointerdown event { blueGesture.addPointer(evt.pointerId); return; } printEvent(evt); // Otherwise pass on event } function clearMessages(evt) // Clear the list of gesture messages { var results = document.getElementById("output"); results.innerHTML = ""; messageId = 0; results = document.getElementById("eventCount"); results.innerHTML = messageId; }</script></head><body id = "page" onload="onLoad()"><!-- Elements to try out gestures --><div class= "display" id="Red" style=" width: 300px; height: 250px; background-color: red"></div><div class= "display" id="Blue" style=" width: 300px; height: 250px; background-color: blue"></div><div class= "display" id="control" style=" width: 300px; height: 250px;"><button onclick=clearMessages()>Clear Messages</button><br /><p>Gesture Event Count: <span id="eventCount"></span></p></div><strong><pre><font size="2" face="Courier"> Type ScrX ScrY CliX CliY TrnX TrnY Scal Rotn Det Current Source <textarea id=output rows="18" cols="140" wrap="off" readonly="readonly" ></textarea></font></pre></strong></body></html>
页面效果图:
Sample Image:
环境:
surface Pro平板电脑。win8.1操作系统,IE11浏览器,vs2012开发软件,C++开发语言
Environment:
surface Pro tablet.
operating system: win8.1
Browser: IE11
develope sofeware: VS2012
develope language: C++