2013-10-29 63 views
4

我使用Windows Store开发(Windows 8)中的HTML/Javascript在IFrame中加载本地HTML文件。我想从Iframe中获取Swipe事件。检测iframe中的滑动手势

我试过这个sample & this。我暂停了包含一个div元素的鼠标滚轮场景。 对于Iframe,它不起作用。

我的代码:

<body> 
    <iframe id="iframe_Id" src="split.html" style="height:768px; width:1366px;" onload="Load();"></iframe> 
</body> 

 

function Load() { 

var elt = document.getElementById("iframe_Id"); 

    elt.style.backgroundColor = "#f3f3f3"; 
    var gobj = new MSGesture(); 
    // Defining gesture object for Pen, mouse and touch 
    gobj.target = elt; 
    elt.gesture = gobj; 
    elt.gesture.pointerType = null; 

    // Creating event listeners for gesture elements 
    elt.addEventListener("MSPointerDown", onPointerDown, false); 
    elt.addEventListener("MSGestureTap", onTap, false); 
    elt.addEventListener("MSGestureHold", onHold, false); 
    elt.addEventListener("MSGestureChange", onGestureChange, false); 

    // Mouse Wheel does not generate onPointerUp 
    elt.addEventListener("MSGestureEnd", onGestureEnd, false); 

} 

function onPointerDown(e) { 
var content = document.getElementById("iframe_Id"); 
} 

我创建功能的所有事件。但是当在我的IFrame中刷卡时,事件不会引发。 我在这里构建。我需要使用Swipe。请帮我解决这个问题。

回答

3

你应该把你的一个<div>块中,像这样:

<body> 
    <div id="watch"> 
     <iframe id="iframe_Id" src="split.html" style="height:768px; 
     width:1366px;" onload="Load();"> 
     </iframe> 
    </div> 
</body> 

然后你看在div#watch,而不是iframe轻扫,因为触摸事件将在DOM和不在iframe中。

+1

这真的有必要吗?为什么要寻找新的div而不是身体的刷卡? – WoIIe

+0

@Natuu 我做了你的建议。它不工作。我能够在div上刷卡..但不Iframe – Kumar

5

如果split.html是本地文件,您应该监听iframe中的事件。然后,您可以使用parent.postMessage()与主机/父级HTML页面进行通信。

另外,您也可以调查在Windows 8.1中HTML/JavaScript应用程序可用的new WebView control

+0

首先,我很抱歉为非常晚的答复。我试图仅从iframe收听活动。但我不知道'Parent.postMessage()'。我是Javascript新手。 你能分享任何与我的案例有关的简要描述的来源链接吗?谢谢 – Kumar

+0

&我想澄清还有一件事是'仍然Webview有像禁用ZOOM'的限制。 SO它不适用于我的情况 – Kumar

+0

现在我正在“倾听来自IFrame的事件”。 尝试后我会回到U. – Kumar