Quantcast
Channel: Internet Explorer Web Development forum
Viewing all articles
Browse latest Browse all 3527

为什么将网页套入exe中网页的轻扫等手势失效?why the webpage gesture is disabled on webbrowser ctrl which wrote by c++?

$
0
0

为什么将网页套入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++ 


Viewing all articles
Browse latest Browse all 3527

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>