繁体   English   中英

节点Webkit-将事件从iframe触发到应用

[英]Node Webkit - Fire Event from iframe to the app

我正在尝试使用nodewebkit制作一个迷你信息亭浏览器(全屏,最小选项等)。 信息亭浏览器的结构如下:

<!DOCTYPE html>
<head>
    ...
</head>
<body>
    <!-- placeholder until iframe is loaded -->
    <div class="placeholder">
        <div class="loading">Loading</div>
    </div>
    <iframe id="iframe" src="" nwfaketop nwdisable></iframe>

    <script type="text/javascript">
        // Basic features of the kiosk browser
        document.onkeydown = function(evt) {
            //Toggle FullScreen on F1 or F11
            if (evt.keyCode == 112 || evt.keyCode == 122) {
                win.toggleKioskMode();
            }
            ...
        }
        ...
        loadIframe();
        ...
    </script>
</body>

问题是,一旦加载并显示了iframe(宽度和高度为100%),就会在此iframe中触发该事件,而不是在我的应用中触发该事件。

我已经使用文档尝试了几件事,但是我并不太了解如何使事情以我想要的方式工作。

因此,任何帮助都会很棒! 谢谢。

您可以在iframe加载后立即在iframe的内容窗口中注册事件处理程序。

var iframe = document.getElementById("iframe");
iframe.onload = function(){
   iframe.contentWindow.addEventListener('keydown',yourHandler);
}

如果要在iframe和窗口之间启用某些通信,则可以使用prothole 请注意,您可能还需要访问为iframe服务的其他域。希望它会有所帮助。

我终于找到了一种使用document-end侦听器的方法,该方法在加载窗口或子iframe(在onload事件之前)时触发。

win.on('document-end', function(frame) {
    if(frame != null){ // If frame is not the window but an Iframe
        frame.contentDocument.body.addEventListener('keydown', yourScript);
    }
});

也许不是执行此操作的正确方法,但它确实有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM